Example #1
0
func Test_NewRepository(t *testing.T) {
	repo, err := NewRepository(dir)
	assert.Nil(t, err)

	// Create 3 queues and push some data
	queueNames := []string{"test1", "test2", "test3"}
	var q *cgroup.CGQueue
	totalItems := 3
	for i := 0; i < len(queueNames); i++ {
		q, _ = repo.GetQueue(queueNames[i])
		for j := 0; j < totalItems; j++ {
			q.Enqueue([]byte("value"))
		}
		// Get one element out
		_, _ = q.GetNext()
	}

	// Close all queues and destroy repo
	repo.CloseAllQueues()
	repo = nil

	// NewRepository repo again and check loaded queues
	repo, err = NewRepository(dir)
	assert.Nil(t, err)

	assert.Equal(t, 3, repo.Count(), "Invalid repo count after initialization")

	for i := 0; i < len(queueNames); i++ {
		q, _ = repo.GetQueue(queueNames[i])
		assert.EqualValues(t, 1, q.Head(), "Invalid queue initialization")
		assert.EqualValues(t, totalItems, q.Tail(), "Invalid queue initialization")
		assert.EqualValues(t, totalItems-1, q.Length(), "Invalid queue initialization")
	}
	repo.DeleteAllQueues()
}