Пример #1
0
func Test_Initialize(t *testing.T) {
	repo, err := Initialize(dir)
	assert.Nil(t, err)

	// Create 3 queues and push some data
	queueNames := []string{"test1", "test2", "test3"}
	var q *queue.Queue
	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.Dequeue()
	}

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

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

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

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