Skip to content

Commit 7f5e328

Browse files
author
Time Hoo
committed
test hserver support using file as metastore
1 parent b2aaa59 commit 7f5e328

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed

app/src/test/java/io/hstream/testing/BasicExtension.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class BasicExtension implements BeforeEachCallback, AfterEachCallback {
1616

1717
private static final Logger logger = LoggerFactory.getLogger(BasicExtension.class);
1818
private Path dataDir;
19+
private Path metadataDir;
1920
private GenericContainer<?> zk;
2021
private GenericContainer<?> rq;
2122
private GenericContainer<?> hstore;
@@ -28,6 +29,7 @@ public void beforeEach(ExtensionContext context) throws Exception {
2829
printBeginFlag(context);
2930

3031
dataDir = Files.createTempDirectory("hstream");
32+
metadataDir = Files.createTempDirectory("hstream-meta");
3133

3234
zk = makeZooKeeper();
3335
zk.start();
@@ -49,7 +51,7 @@ public void beforeEach(ExtensionContext context) throws Exception {
4951
options.port = hServerPort;
5052
options.internalPort = hServerInternalPort;
5153
options.metaHost = zkHost;
52-
hserver = makeHServer(options, hServerAddress + ":" + hServerInternalPort, dataDir);
54+
hserver = makeHServer(options, hServerAddress + ":" + hServerInternalPort, dataDir, metadataDir);
5355
hserver.start();
5456
Thread.sleep(1000);
5557
Object testInstance = context.getRequiredTestInstance();

app/src/test/java/io/hstream/testing/ClusterExtension.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public class ClusterExtension implements BeforeEachCallback, AfterEachCallback {
2727
private final List<String> hServerInnerUrls = new ArrayList<>(CLUSTER_SIZE);
2828
private String seedNodes;
2929
private Path dataDir;
30+
31+
private Path metadataDir;
3032
private GenericContainer<?> zk;
3133
private GenericContainer<?> rq;
3234
private GenericContainer<?> hstore;
@@ -43,6 +45,7 @@ public void beforeEach(ExtensionContext context) throws Exception {
4345
printBeginFlag(context);
4446

4547
dataDir = Files.createTempDirectory("hstream");
48+
metadataDir = Files.createTempDirectory("hstream-meta");
4649

4750
TestUtils.SecurityOptions securityOptions = makeSecurityOptions(context.getTags());
4851

@@ -76,7 +79,7 @@ public void beforeEach(ExtensionContext context) throws Exception {
7679
hServerInnerUrls.add(hServerAddress + ":" + hServerInnerPort);
7780
}
7881
seedNodes = hServerInnerUrls.stream().reduce((url1, url2) -> url1 + "," + url2).get();
79-
hServers.addAll(bootstrapHServerCluster(hserverConfs, seedNodes, dataDir));
82+
hServers.addAll(bootstrapHServerCluster(hserverConfs, seedNodes, dataDir, metadataDir));
8083
hServers.stream().forEach(h -> logger.info(h.getLogs()));
8184
Thread.sleep(3000);
8285

@@ -115,6 +118,12 @@ public void beforeEach(ExtensionContext context) throws Exception {
115118
.getClass()
116119
.getMethod("setDataDir", Path.class)
117120
.invoke(testInstance, dataDir));
121+
silence(
122+
() ->
123+
testInstance
124+
.getClass()
125+
.getMethod("setMetadataDir", Path.class)
126+
.invoke(testInstance, metadataDir));
118127
silence(
119128
() ->
120129
testInstance

app/src/test/java/io/hstream/testing/TestUtils.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,9 @@ public static GenericContainer<?> makeZooKeeper() {
116116
public static GenericContainer<?> makeRQLite() {
117117
return new GenericContainer<>(DockerImageName.parse("rqlite/rqlite")).withNetworkMode("host");
118118
}
119+
public static GenericContainer<?> makeFile() {
120+
return new GenericContainer<>(DockerImageName.parse("rqlite/rqlite")).withNetworkMode("host");
121+
}
119122

120123
private static DockerImageName getHStreamImageName() {
121124
String hstreamImageName = System.getenv("HSTREAM_IMAGE_NAME");
@@ -139,6 +142,9 @@ private static String getHStreamMetaStorePreference(String metaHost) {
139142
} else if (hstreamMetaStore.equalsIgnoreCase("RQLITE")) {
140143
logger.info("HSTREAM_META_STORE specified RQLITE as meta store");
141144
return "rq://" + metaHost + ":4001";
145+
} else if (hstreamMetaStore.equalsIgnoreCase("FILE")) {
146+
logger.info("HSTREAM_META_STORE specified FILE as meta store");
147+
return "file:///data/metastore/hstream";
142148
} else {
143149
throw new RuntimeException("Invalid HSTREAM_META_STORE env variable value");
144150
}
@@ -184,10 +190,11 @@ public String toString() {
184190
}
185191

186192
public static GenericContainer<?> makeHServer(
187-
HServerCliOpts hserverConf, String seedNodes, Path dataDir) {
193+
HServerCliOpts hserverConf, String seedNodes, Path dataDir, Path metadataDir) {
188194
return new GenericContainer<>(getHStreamImageName())
189195
.withNetworkMode("host")
190196
.withFileSystemBind(dataDir.toAbsolutePath().toString(), "/data/hstore", BindMode.READ_ONLY)
197+
.withFileSystemBind(metadataDir.toAbsolutePath().toString(), "/data/metastore", BindMode.READ_WRITE)
191198
.withFileSystemBind(hserverConf.securityOptions.dir, "/data/security", BindMode.READ_ONLY)
192199
.withCommand(
193200
"bash", "-c", " hstream-server" + hserverConf.toString() + " --seed-nodes " + seedNodes)
@@ -230,11 +237,11 @@ public String toString() {
230237
}
231238

232239
public static List<GenericContainer<?>> bootstrapHServerCluster(
233-
List<HServerCliOpts> hserverConfs, String seedNodes, Path dataDir)
240+
List<HServerCliOpts> hserverConfs, String seedNodes, Path dataDir, Path metadataDir)
234241
throws IOException, InterruptedException {
235242
List<GenericContainer<?>> hServers = new ArrayList<>();
236243
for (HServerCliOpts hserverConf : hserverConfs) {
237-
var hServer = makeHServer(hserverConf, seedNodes, dataDir);
244+
var hServer = makeHServer(hserverConf, seedNodes, dataDir, metadataDir);
238245
hServers.add(hServer);
239246
}
240247
hServers.stream().parallel().forEach(GenericContainer::start);

0 commit comments

Comments
 (0)