Skip to content
This repository was archived by the owner on May 6, 2020. It is now read-only.

Commit 53be4ae

Browse files
authored
Merge pull request #205 from amshinde/fix-fd-leak-tests
Fix file descriptor leak tests
2 parents 9f6282a + cc533a3 commit 53be4ae

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

fdleak_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ func TestFdDetectorLeak(t *testing.T) {
280280
t.Error(err)
281281
}
282282

283-
_, err = os.Open("/dev/null")
283+
f, err := os.Open("/dev/null")
284284
if err != nil {
285285
t.Error(err)
286286
}
@@ -296,6 +296,10 @@ func TestFdDetectorLeak(t *testing.T) {
296296
fmt.Print(buffer.String())
297297
t.Fatal()
298298
}
299+
300+
if err := f.Close(); err != nil {
301+
t.Error(err)
302+
}
299303
}
300304

301305
func TestFdDetectorCompare(t *testing.T) {

ksm_test.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,21 +57,20 @@ func ksmTestPrepare() error {
5757
if err != nil {
5858
return err
5959
}
60+
defer ksmTestRun.Close()
6061

6162
ksmTestPagesToScan, err := os.Create(filepath.Join(defaultKSMRoot, ksmPagesToScan))
6263
if err != nil {
6364
return err
6465
}
66+
defer ksmTestPagesToScan.Close()
6567

6668
ksmTestSleepMillisec, err := os.Create(filepath.Join(defaultKSMRoot, ksmSleepMillisec))
6769
if err != nil {
6870
return err
6971
}
7072

71-
defer ksmTestRun.Close()
72-
defer ksmTestPagesToScan.Close()
7373
defer ksmTestSleepMillisec.Close()
74-
7574
return nil
7675
}
7776

@@ -131,13 +130,26 @@ func initKSM(root string, t *testing.T) *ksm {
131130
return k
132131
}
133132

133+
func closeKSMFds(k *ksm) {
134+
if k.run.file != nil {
135+
_ = k.run.close()
136+
}
137+
if k.sleepInterval.file != nil {
138+
_ = k.sleepInterval.close()
139+
}
140+
if k.pagesToScan.file != nil {
141+
_ = k.pagesToScan.close()
142+
}
143+
}
144+
134145
func TestKSMAvailabilityDummy(t *testing.T) {
135146
_, err := newKSM("foo")
136147
assert.NotNil(t, err)
137148
}
138149

139150
func TestKSMAvailability(t *testing.T) {
140151
k := initKSM(defaultKSMRoot, t)
152+
defer closeKSMFds(k)
141153

142154
err := k.isAvailable()
143155
assert.Nil(t, err)
@@ -209,6 +221,7 @@ func TestKSMInit(t *testing.T) {
209221
assert.Nil(t, err)
210222

211223
k := initKSM(defaultKSMRoot, t)
224+
defer closeKSMFds(k)
212225

213226
assert.Equal(t, k.initialPagesToScan, scan)
214227
assert.Equal(t, k.initialSleepInterval, interval)
@@ -250,6 +263,7 @@ func TestKSMRestore(t *testing.T) {
250263
assert.Nil(t, err)
251264

252265
k := initKSM(defaultKSMRoot, t)
266+
defer closeKSMFds(k)
253267

254268
// Write dummy values and read them back
255269
var newInterval = "foo"
@@ -299,6 +313,7 @@ func TestKSMRestore(t *testing.T) {
299313

300314
func TestKSMKick(t *testing.T) {
301315
k := initKSM(defaultKSMRoot, t)
316+
defer closeKSMFds(k)
302317

303318
timer := time.NewTimer(time.Second)
304319
k.throttling = true
@@ -334,6 +349,7 @@ func TestKSMTune(t *testing.T) {
334349
assert.Nil(t, err)
335350

336351
k := initKSM(defaultKSMRoot, t)
352+
defer closeKSMFds(k)
337353

338354
for _, v := range ksmSettings {
339355
err = k.tune(v)
@@ -474,6 +490,7 @@ func testThrottle(k *ksm, t *testing.T) {
474490

475491
func TestKSMThrottle(t *testing.T) {
476492
k := initKSM(defaultKSMRoot, t)
493+
defer closeKSMFds(k)
477494

478495
// Let's make the throttling down faster, for quicker tests purpose.
479496
ksmAggressiveInterval = 500 * time.Millisecond

0 commit comments

Comments
 (0)