github.com/jfrog/jfrog-cli-core/v2@v2.51.0/artifactory/commands/transferfiles/manager_test.go (about) 1 package transferfiles 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestRunProducerConsumers(t *testing.T) { 11 // Create the producer-consumers 12 producerConsumerWrapper := newProducerConsumerWrapper() 13 14 // Add 10 tasks for the chunkBuilderProducerConsumer. Each task provides a task to the chunkUploaderProducerConsumer. 15 for i := 0; i < 10; i++ { 16 _, err := producerConsumerWrapper.chunkBuilderProducerConsumer.AddTask(func(int) error { 17 time.Sleep(time.Millisecond * 100) 18 _, err := producerConsumerWrapper.chunkUploaderProducerConsumer.AddTask( 19 func(int) error { 20 time.Sleep(time.Millisecond) 21 return nil 22 }, 23 ) 24 assert.NoError(t, err) 25 return nil 26 }) 27 assert.NoError(t, err) 28 } 29 30 // Run the producer-consumers 31 err := runProducerConsumers(&producerConsumerWrapper) 32 assert.NoError(t, err) 33 34 // Assert no active treads left in the producer-consumers 35 assert.Zero(t, producerConsumerWrapper.chunkBuilderProducerConsumer.ActiveThreads()) 36 assert.Zero(t, producerConsumerWrapper.chunkUploaderProducerConsumer.ActiveThreads()) 37 }