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  }