forked from docker-java/docker-java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStatsCmdImplTest.java
More file actions
106 lines (79 loc) · 3.23 KB
/
Copy pathStatsCmdImplTest.java
File metadata and controls
106 lines (79 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package com.github.dockerjava.core.command;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.isEmptyString;
import static org.hamcrest.Matchers.not;
import java.io.IOException;
import java.lang.reflect.Method;
import java.security.SecureRandom;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.testng.ITestResult;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import com.github.dockerjava.api.command.CreateContainerResponse;
import com.github.dockerjava.api.model.Statistics;
import com.github.dockerjava.client.AbstractDockerClientTest;
import com.github.dockerjava.core.async.ResultCallbackTemplate;
@Test(groups = "integration")
public class StatsCmdImplTest extends AbstractDockerClientTest {
private static int NUM_STATS = 5;
@BeforeTest
public void beforeTest() throws Exception {
super.beforeTest();
}
@AfterTest
public void afterTest() {
super.afterTest();
}
@BeforeMethod
public void beforeMethod(Method method) {
super.beforeMethod(method);
}
@AfterMethod
public void afterMethod(ITestResult result) {
super.afterMethod(result);
}
@Test(groups = "ignoreInCircleCi")
public void testStatsStreaming() throws InterruptedException, IOException {
TimeUnit.SECONDS.sleep(1);
CountDownLatch countDownLatch = new CountDownLatch(NUM_STATS);
String containerName = "generated_" + new SecureRandom().nextInt();
CreateContainerResponse container = dockerClient.createContainerCmd("busybox").withCmd("top")
.withName(containerName).exec();
LOG.info("Created container {}", container.toString());
assertThat(container.getId(), not(isEmptyString()));
dockerClient.startContainerCmd(container.getId()).exec();
StatsCallbackTest statsCallback = dockerClient.statsCmd(container.getId()).exec(
new StatsCallbackTest(countDownLatch));
countDownLatch.await(3, TimeUnit.SECONDS);
Boolean gotStats = statsCallback.gotStats();
LOG.info("Stop stats collection");
statsCallback.close();
LOG.info("Stopping container");
dockerClient.stopContainerCmd(container.getId()).exec();
dockerClient.removeContainerCmd(container.getId()).exec();
LOG.info("Completed test");
assertTrue(gotStats, "Expected true");
}
private class StatsCallbackTest extends ResultCallbackTemplate<StatsCallbackTest, Statistics> {
private final CountDownLatch countDownLatch;
private Boolean gotStats = false;
public StatsCallbackTest(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}
@Override
public void onNext(Statistics stats) {
LOG.info("Received stats #{}: {}", countDownLatch.getCount(), stats);
if (stats != null) {
gotStats = true;
}
countDownLatch.countDown();
}
public Boolean gotStats() {
return gotStats;
}
}
}