@@ -2662,31 +2662,52 @@ async def test_replication_timeout_on_full_sync_heartbeat_expiry(
2662
2662
2663
2663
@pytest .mark .parametrize (
2664
2664
"element_size, elements_number" ,
2665
- [(16 , 20000 ), (20000 , 16 )],
2665
+ [(16 , 30000 ), (30000 , 16 )],
2666
2666
)
2667
+ @dfly_args ({"proactor_threads" : 1 })
2667
2668
async def test_big_containers (df_factory , element_size , elements_number ):
2668
- master = df_factory .create (proactor_threads = 4 )
2669
- replica = df_factory .create (proactor_threads = 4 )
2669
+ master = df_factory .create ()
2670
+ replica = df_factory .create ()
2670
2671
2671
2672
df_factory .start_all ([master , replica ])
2672
2673
c_master = master .client ()
2673
2674
c_replica = replica .client ()
2674
2675
2675
2676
logging .debug ("Fill master with test data" )
2676
2677
seeder = StaticSeeder (
2677
- key_target = 10 ,
2678
+ key_target = 50 ,
2678
2679
data_size = element_size * elements_number ,
2679
2680
collection_size = elements_number ,
2680
2681
variance = 1 ,
2681
- samples = 5 ,
2682
- types = ["LIST" , "SET" , "ZSET" , "HASH" ],
2682
+ samples = 1 ,
2683
+ types = ["LIST" , "SET" , "ZSET" , "HASH" , "STREAM" ],
2683
2684
)
2684
2685
await seeder .run (c_master )
2685
2686
2687
+ async def get_memory (client , field ):
2688
+ info = await client .info ("memory" )
2689
+ return info [field ]
2690
+
2691
+ await asyncio .sleep (1 ) # wait for heartbeat to update rss memory
2692
+ used_memory = await get_memory (c_master , "used_memory_rss" )
2693
+
2686
2694
logging .debug ("Start replication and wait for full sync" )
2687
2695
await c_replica .execute_command (f"REPLICAOF localhost { master .port } " )
2688
2696
await wait_for_replicas_state (c_replica )
2689
2697
2698
+ peak_memory = await get_memory (c_master , "used_memory_peak_rss" )
2699
+
2700
+ logging .info (f"Used memory { used_memory } , peak memory { peak_memory } " )
2701
+ assert peak_memory < 1.1 * used_memory
2702
+
2703
+ await c_replica .execute_command ("memory decommit" )
2704
+ await asyncio .sleep (1 )
2705
+ replica_peak_memory = await get_memory (c_replica , "used_memory_peak_rss" )
2706
+ replica_used_memory = await get_memory (c_replica , "used_memory_rss" )
2707
+
2708
+ logging .info (f"Replica Used memory { replica_used_memory } , peak memory { replica_peak_memory } " )
2709
+ assert replica_peak_memory < 1.1 * replica_used_memory
2710
+
2690
2711
# Check replica data consisten
2691
2712
replica_data = await StaticSeeder .capture (c_replica )
2692
2713
master_data = await StaticSeeder .capture (c_master )
0 commit comments