mirror of
				https://github.com/elyby/chrly.git
				synced 2025-05-31 14:11:51 +05:30 
			
		
		
		
	Fix in_memory_textures_storage_test [skip deploy]
This commit is contained in:
		| @@ -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) |  | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user