@@ -77,33 +77,31 @@ func TestFileStateTryRestore(t *testing.T) {
7777 stateFileContent string
7878 policyName string
7979 expErr string
80+ expPanic bool
8081 expectedState * stateMemory
8182 }{
8283 {
83- "Invalid JSON - empty file" ,
84+ "Invalid JSON - one byte file" ,
8485 "\n " ,
8586 "none" ,
86- "state file: could not unmarshal, corrupted state file" ,
87- & stateMemory {
88- assignments : ContainerCPUAssignments {},
89- defaultCPUSet : cpuset .NewCPUSet (),
90- },
87+ "[cpumanager] state file: unable to restore state from disk (unexpected end of JSON input)" ,
88+ true ,
89+ & stateMemory {},
9190 },
9291 {
9392 "Invalid JSON - invalid content" ,
9493 "{" ,
9594 "none" ,
96- "state file: could not unmarshal, corrupted state file" ,
97- & stateMemory {
98- assignments : ContainerCPUAssignments {},
99- defaultCPUSet : cpuset .NewCPUSet (),
100- },
95+ "[cpumanager] state file: unable to restore state from disk (unexpected end of JSON input)" ,
96+ true ,
97+ & stateMemory {},
10198 },
10299 {
103100 "Try restore defaultCPUSet only" ,
104101 `{"policyName": "none", "defaultCpuSet": "4-6"}` ,
105102 "none" ,
106103 "" ,
104+ false ,
107105 & stateMemory {
108106 assignments : ContainerCPUAssignments {},
109107 defaultCPUSet : cpuset .NewCPUSet (4 , 5 , 6 ),
@@ -113,11 +111,9 @@ func TestFileStateTryRestore(t *testing.T) {
113111 "Try restore defaultCPUSet only - invalid name" ,
114112 `{"policyName": "none", "defaultCpuSet" "4-6"}` ,
115113 "none" ,
116- "" ,
117- & stateMemory {
118- assignments : ContainerCPUAssignments {},
119- defaultCPUSet : cpuset .NewCPUSet (),
120- },
114+ `[cpumanager] state file: unable to restore state from disk (invalid character '"' after object key)` ,
115+ true ,
116+ & stateMemory {},
121117 },
122118 {
123119 "Try restore assignments only" ,
@@ -130,6 +126,7 @@ func TestFileStateTryRestore(t *testing.T) {
130126 }` ,
131127 "none" ,
132128 "" ,
129+ false ,
133130 & stateMemory {
134131 assignments : ContainerCPUAssignments {
135132 "container1" : cpuset .NewCPUSet (4 , 5 , 6 ),
@@ -146,21 +143,17 @@ func TestFileStateTryRestore(t *testing.T) {
146143 "entries": {}
147144 }` ,
148145 "B" ,
149- "policy configured \" B\" != policy from state file \" A\" " ,
150- & stateMemory {
151- assignments : ContainerCPUAssignments {},
152- defaultCPUSet : cpuset .NewCPUSet (),
153- },
146+ `[cpumanager] state file: unable to restore state from disk (policy configured "B" != policy from state file "A")` ,
147+ true ,
148+ & stateMemory {},
154149 },
155150 {
156151 "Try restore invalid assignments" ,
157152 `{"entries": }` ,
158153 "none" ,
159- "state file: could not unmarshal, corrupted state file" ,
160- & stateMemory {
161- assignments : ContainerCPUAssignments {},
162- defaultCPUSet : cpuset .NewCPUSet (),
163- },
154+ "[cpumanager] state file: unable to restore state from disk (invalid character '}' looking for beginning of value)" ,
155+ true ,
156+ & stateMemory {},
164157 },
165158 {
166159 "Try restore valid file" ,
@@ -174,6 +167,7 @@ func TestFileStateTryRestore(t *testing.T) {
174167 }` ,
175168 "none" ,
176169 "" ,
170+ false ,
177171 & stateMemory {
178172 assignments : ContainerCPUAssignments {
179173 "container1" : cpuset .NewCPUSet (4 , 5 , 6 ),
@@ -189,11 +183,9 @@ func TestFileStateTryRestore(t *testing.T) {
189183 "defaultCpuSet": "2-sd"
190184 }` ,
191185 "none" ,
192- "state file: could not parse state file" ,
193- & stateMemory {
194- assignments : ContainerCPUAssignments {},
195- defaultCPUSet : cpuset .NewCPUSet (),
196- },
186+ `[cpumanager] state file: unable to restore state from disk (strconv.Atoi: parsing "sd": invalid syntax)` ,
187+ true ,
188+ & stateMemory {},
197189 },
198190 {
199191 "Try restore un-parsable assignments" ,
@@ -206,17 +198,16 @@ func TestFileStateTryRestore(t *testing.T) {
206198 }
207199 }` ,
208200 "none" ,
209- "state file: could not parse state file" ,
210- & stateMemory {
211- assignments : ContainerCPUAssignments {},
212- defaultCPUSet : cpuset .NewCPUSet (),
213- },
201+ `[cpumanager] state file: unable to restore state from disk (strconv.Atoi: parsing "p": invalid syntax)` ,
202+ true ,
203+ & stateMemory {},
214204 },
215205 {
216- "TryRestoreState creates empty state file" ,
206+ "tryRestoreState creates empty state file" ,
217207 "" ,
218208 "none" ,
219209 "" ,
210+ false ,
220211 & stateMemory {
221212 assignments : ContainerCPUAssignments {},
222213 defaultCPUSet : cpuset .NewCPUSet (),
@@ -226,11 +217,23 @@ func TestFileStateTryRestore(t *testing.T) {
226217
227218 for idx , tc := range testCases {
228219 t .Run (tc .description , func (t * testing.T ) {
220+ defer func () {
221+ if tc .expPanic {
222+ r := recover ()
223+ panicMsg := r .(string )
224+ if ! strings .HasPrefix (panicMsg , tc .expErr ) {
225+ t .Fatalf (`expected panic "%s" but got "%s"` , tc .expErr , panicMsg )
226+ } else {
227+ t .Logf (`got expected panic "%s"` , panicMsg )
228+ }
229+ }
230+ }()
231+
229232 sfilePath , err := ioutil .TempFile ("/tmp" , fmt .Sprintf ("cpumanager_state_file_test_%d" , idx ))
230233 if err != nil {
231234 t .Errorf ("cannot create temporary file: %q" , err .Error ())
232235 }
233- // Don't create state file, let TryRestoreState figure out that is should create
236+ // Don't create state file, let tryRestoreState figure out that is should create
234237 if tc .stateFileContent != "" {
235238 writeToStateFile (sfilePath .Name (), tc .stateFileContent )
236239 }
@@ -245,11 +248,11 @@ func TestFileStateTryRestore(t *testing.T) {
245248 if tc .expErr != "" {
246249 if logData .String () != "" {
247250 if ! strings .Contains (logData .String (), tc .expErr ) {
248- t .Errorf ("TryRestoreState () error = %v, wantErr %v" , logData .String (), tc .expErr )
251+ t .Errorf ("tryRestoreState () error = %v, wantErr %v" , logData .String (), tc .expErr )
249252 return
250253 }
251254 } else {
252- t .Errorf ("TryRestoreState () error = nil, wantErr %v" , tc .expErr )
255+ t .Errorf ("tryRestoreState () error = nil, wantErr %v" , tc .expErr )
253256 return
254257 }
255258 }
@@ -268,7 +271,7 @@ func TestFileStateTryRestorePanic(t *testing.T) {
268271 }{
269272 "Panic creating file" ,
270273 true ,
271- "[cpumanager] state file not created " ,
274+ "[cpumanager] state file not written " ,
272275 }
273276
274277 t .Run (testCase .description , func (t * testing.T ) {
@@ -277,10 +280,10 @@ func TestFileStateTryRestorePanic(t *testing.T) {
277280 if err := recover (); err != nil {
278281 if testCase .wantPanic {
279282 if testCase .panicMessage == err {
280- t .Logf ("TryRestoreState () got expected panic = %v" , err )
283+ t .Logf ("tryRestoreState () got expected panic = %v" , err )
281284 return
282285 }
283- t .Errorf ("TryRestoreState () unexpected panic = %v, wantErr %v" , err , testCase .panicMessage )
286+ t .Errorf ("tryRestoreState () unexpected panic = %v, wantErr %v" , err , testCase .panicMessage )
284287 }
285288 }
286289 }()
0 commit comments