@@ -21,55 +21,63 @@ func TestMemoryPressureResponse(t *testing.T) {
21
21
ctx := context .Background ()
22
22
23
23
tests := []struct {
24
- name string
25
- mlCfg * Config
26
- getMemFn func () (uint64 , error )
27
- readMemStatsFn func (m * runtime.MemStats )
28
- expectError bool
24
+ name string
25
+ mlCfg * Config
26
+ memAlloc uint64
27
+ expectError bool
29
28
}{
30
29
{
31
- name : "fixed_limit " ,
30
+ name : "Below memAllocLimit " ,
32
31
mlCfg : & Config {
33
- CheckInterval : 1 * time .Nanosecond ,
34
- MemoryLimitMiB : 1024 ,
35
- MemorySpikeLimitMiB : 512 ,
32
+ CheckInterval : time .Second ,
33
+ MemoryLimitPercentage : 50 ,
34
+ MemorySpikePercentage : 1 ,
36
35
},
36
+ memAlloc : 800 ,
37
37
expectError : false ,
38
38
},
39
39
{
40
- name : "percent_limit" ,
40
+ name : "Above memAllocLimit" ,
41
+ mlCfg : & Config {
42
+ CheckInterval : time .Second ,
43
+ MemoryLimitPercentage : 50 ,
44
+ MemorySpikePercentage : 1 ,
45
+ },
46
+ memAlloc : 1800 ,
47
+ expectError : true ,
48
+ },
49
+ {
50
+ name : "Below memSpikeLimit" ,
41
51
mlCfg : & Config {
42
- CheckInterval : 1 * time .Nanosecond ,
52
+ CheckInterval : time .Second ,
43
53
MemoryLimitPercentage : 50 ,
44
- MemorySpikePercentage : 30 ,
54
+ MemorySpikePercentage : 10 ,
45
55
},
56
+ memAlloc : 800 ,
46
57
expectError : false ,
47
58
},
48
59
{
49
- name : "fixed_limit " ,
60
+ name : "Above memSpikeLimit " ,
50
61
mlCfg : & Config {
51
- CheckInterval : 1 * time .Nanosecond ,
62
+ CheckInterval : time .Second ,
52
63
MemoryLimitPercentage : 50 ,
53
- MemorySpikePercentage : 30 ,
64
+ MemorySpikePercentage : 11 ,
54
65
},
55
- getMemFn : totalMemory ,
56
- readMemStatsFn : readMemStats ,
57
- expectError : true ,
66
+ memAlloc : 800 ,
67
+ expectError : true ,
58
68
},
59
69
}
60
70
for _ , tt := range tests {
61
71
t .Run (tt .name , func (t * testing.T ) {
62
- if tt .getMemFn != nil {
63
- memorylimiter .GetMemoryFn = tt .getMemFn
64
- }
65
- if tt .readMemStatsFn != nil {
66
- memorylimiter .ReadMemStatsFn = tt .readMemStatsFn
72
+ memorylimiter .GetMemoryFn = totalMemory
73
+ memorylimiter .ReadMemStatsFn = func (ms * runtime.MemStats ) {
74
+ ms .Alloc = tt .memAlloc
67
75
}
68
76
ml , err := newMemoryLimiter (tt .mlCfg , zap .NewNop ())
69
-
70
77
assert .NoError (t , err )
78
+
71
79
assert .NoError (t , ml .Start (ctx , & mockHost {}))
72
- time . Sleep ( 50 * time . Millisecond )
80
+ ml . memLimiter . CheckMemLimits ( )
73
81
mustRefuse := ml .MustRefuse ()
74
82
if tt .expectError {
75
83
assert .True (t , mustRefuse )
@@ -94,9 +102,5 @@ func (h *mockHost) GetExtensions() map[component.ID]component.Component {
94
102
}
95
103
96
104
func totalMemory () (uint64 , error ) {
97
- return uint64 (4096 ), nil
98
- }
99
-
100
- func readMemStats (m * runtime.MemStats ) {
101
- m .Alloc = 2000
105
+ return uint64 (2048 ), nil
102
106
}
0 commit comments