mirror of
https://github.com/elyby/chrly.git
synced 2024-11-23 05:33:18 +05:30
Fix in_memory_textures_storage_test [skip deploy]
This commit is contained in:
parent
fd05220299
commit
620bb95c74
@ -126,62 +126,39 @@ func TestInMemoryTexturesStorage_StoreTextures(t *testing.T) {
|
|||||||
func TestInMemoryTexturesStorage_GarbageCollection(t *testing.T) {
|
func TestInMemoryTexturesStorage_GarbageCollection(t *testing.T) {
|
||||||
storage := NewInMemoryTexturesStorage()
|
storage := NewInMemoryTexturesStorage()
|
||||||
defer storage.Stop()
|
defer storage.Stop()
|
||||||
storage.GCPeriod = 40 * time.Millisecond
|
storage.GCPeriod = 10 * time.Millisecond
|
||||||
storage.Duration = 40 * time.Millisecond
|
storage.Duration = 9 * time.Millisecond
|
||||||
|
|
||||||
textures1 := &mojang.SignedTexturesResponse{
|
textures1 := &mojang.SignedTexturesResponse{
|
||||||
Id: "dead24f9a4fa4877b7b04c8c6c72bb46",
|
Id: "dead24f9a4fa4877b7b04c8c6c72bb46",
|
||||||
Name: "mock1",
|
Name: "mock1",
|
||||||
Props: []*mojang.Property{
|
Props: []*mojang.Property{},
|
||||||
{
|
|
||||||
Name: "textures",
|
|
||||||
Value: mojang.EncodeTextures(&mojang.TexturesProp{
|
|
||||||
Timestamp: time.Now().UnixNano() / 10e5,
|
|
||||||
ProfileID: "dead24f9a4fa4877b7b04c8c6c72bb46",
|
|
||||||
ProfileName: "mock1",
|
|
||||||
Textures: &mojang.TexturesResponse{},
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
textures2 := &mojang.SignedTexturesResponse{
|
textures2 := &mojang.SignedTexturesResponse{
|
||||||
Id: "b5d58475007d4f9e9ddd1403e2497579",
|
Id: "b5d58475007d4f9e9ddd1403e2497579",
|
||||||
Name: "mock2",
|
Name: "mock2",
|
||||||
Props: []*mojang.Property{
|
Props: []*mojang.Property{},
|
||||||
{
|
|
||||||
Name: "textures",
|
|
||||||
Value: mojang.EncodeTextures(&mojang.TexturesProp{
|
|
||||||
Timestamp: time.Now().UnixNano() / 10e5,
|
|
||||||
ProfileID: "b5d58475007d4f9e9ddd1403e2497579",
|
|
||||||
ProfileName: "mock2",
|
|
||||||
Textures: &mojang.TexturesResponse{},
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
storage.StoreTextures("dead24f9a4fa4877b7b04c8c6c72bb46", textures1)
|
storage.StoreTextures("dead24f9a4fa4877b7b04c8c6c72bb46", textures1)
|
||||||
time.Sleep(storage.GCPeriod / 4) // Store second texture a bit later to avoid it removing by gc
|
// Store another texture a bit later to avoid it removing by GC after the first iteration
|
||||||
|
time.Sleep(2 * time.Millisecond)
|
||||||
storage.StoreTextures("b5d58475007d4f9e9ddd1403e2497579", textures2)
|
storage.StoreTextures("b5d58475007d4f9e9ddd1403e2497579", textures2)
|
||||||
|
|
||||||
time.Sleep(storage.GCPeriod) // Let it start first iteration
|
storage.lock.RLock()
|
||||||
|
assert.Len(t, storage.data, 2, "the GC period has not yet reached")
|
||||||
|
storage.lock.RUnlock()
|
||||||
|
|
||||||
texturesFromStorage1, textures1Err := storage.GetTextures("dead24f9a4fa4877b7b04c8c6c72bb46")
|
time.Sleep(storage.GCPeriod) // Let it perform the first GC iteration
|
||||||
texturesFromStorage2, textures2Err := storage.GetTextures("b5d58475007d4f9e9ddd1403e2497579")
|
|
||||||
|
|
||||||
assert.Nil(t, texturesFromStorage1)
|
storage.lock.RLock()
|
||||||
assert.Nil(t, textures1Err)
|
assert.Len(t, storage.data, 1, "the first texture should be cleaned by GC")
|
||||||
assert.NotNil(t, texturesFromStorage2)
|
assert.Contains(t, storage.data, "b5d58475007d4f9e9ddd1403e2497579")
|
||||||
assert.Nil(t, textures2Err)
|
storage.lock.RUnlock()
|
||||||
|
|
||||||
time.Sleep(storage.GCPeriod) // Let another iteration happen
|
time.Sleep(storage.GCPeriod) // Let another iteration happen
|
||||||
|
|
||||||
texturesFromStorage1, textures1Err = storage.GetTextures("dead24f9a4fa4877b7b04c8c6c72bb46")
|
storage.lock.RLock()
|
||||||
texturesFromStorage2, textures2Err = storage.GetTextures("b5d58475007d4f9e9ddd1403e2497579")
|
assert.Len(t, storage.data, 0)
|
||||||
|
storage.lock.RUnlock()
|
||||||
assert.Nil(t, texturesFromStorage1)
|
|
||||||
assert.Nil(t, textures1Err)
|
|
||||||
assert.Nil(t, texturesFromStorage2)
|
|
||||||
assert.Nil(t, textures2Err)
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user