mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-22 02:47:48 +08:00
- Modified Godeps/Godeps.json by hand - [TEST] Updated welcome docs hash to sharness - [TEST] Updated contact doc - [TEST] disabled breaking test (t0080-repo refs local)
64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
package worker
|
|
|
|
import (
|
|
blocks "github.com/ipfs/go-ipfs/blocks"
|
|
"testing"
|
|
)
|
|
|
|
func TestStartClose(t *testing.T) {
|
|
numRuns := 50
|
|
if testing.Short() {
|
|
numRuns = 5
|
|
}
|
|
for i := 0; i < numRuns; i++ {
|
|
w := NewWorker(nil, DefaultConfig)
|
|
w.Close()
|
|
}
|
|
}
|
|
|
|
func TestQueueDeduplication(t *testing.T) {
|
|
numUniqBlocks := 5 // arbitrary
|
|
|
|
var firstBatch []*blocks.Block
|
|
for i := 0; i < numUniqBlocks; i++ {
|
|
firstBatch = append(firstBatch, blockFromInt(i))
|
|
}
|
|
|
|
// to get different pointer values and prevent the implementation from
|
|
// cheating. The impl must check equality using Key.
|
|
var secondBatch []*blocks.Block
|
|
for i := 0; i < numUniqBlocks; i++ {
|
|
secondBatch = append(secondBatch, blockFromInt(i))
|
|
}
|
|
var workQueue BlockList
|
|
|
|
for _, b := range append(firstBatch, secondBatch...) {
|
|
workQueue.Push(b)
|
|
}
|
|
for i := 0; i < numUniqBlocks; i++ {
|
|
b := workQueue.Pop()
|
|
if b.Key() != firstBatch[i].Key() {
|
|
t.Fatal("list is not FIFO")
|
|
}
|
|
}
|
|
if b := workQueue.Pop(); b != nil {
|
|
t.Fatal("the workQueue did not de-duplicate the blocks")
|
|
}
|
|
}
|
|
|
|
func TestPushPopPushPop(t *testing.T) {
|
|
var workQueue BlockList
|
|
orig := blockFromInt(1)
|
|
dup := blockFromInt(1)
|
|
workQueue.PushFront(orig)
|
|
workQueue.Pop()
|
|
workQueue.Push(dup)
|
|
if workQueue.Len() != 1 {
|
|
t.Fatal("the block list's internal state is corrupt")
|
|
}
|
|
}
|
|
|
|
func blockFromInt(i int) *blocks.Block {
|
|
return blocks.NewBlock([]byte(string(i)))
|
|
}
|