Skip to content

Commit 1a6919e

Browse files
authored
Added hook for internal testing (#111)
* Added hook for internal testing
1 parent 00e9f96 commit 1a6919e

File tree

1 file changed

+68
-0
lines changed
  • driver/src/main/java/oracle/nosql/driver/http

1 file changed

+68
-0
lines changed

driver/src/main/java/oracle/nosql/driver/http/Client.java

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,14 @@
3333
import static oracle.nosql.driver.util.LogUtil.logTrace;
3434
import static oracle.nosql.driver.util.LogUtil.logWarning;
3535

36+
import java.io.DataOutputStream;
37+
import java.io.FileOutputStream;
3638
import java.io.IOException;
3739
import java.net.URL;
3840
import java.util.HashSet;
3941
import java.util.Iterator;
4042
import java.util.Map;
43+
import java.util.Properties;
4144
import java.util.concurrent.ConcurrentHashMap;
4245
import java.util.concurrent.ConcurrentLinkedQueue;
4346
import java.util.concurrent.ExecutionException;
@@ -216,6 +219,9 @@ public class Client {
216219

217220
private volatile TopologyInfo topology;
218221

222+
/* for internal testing */
223+
private final String prepareFilename;
224+
219225
public Client(Logger logger,
220226
NoSQLHandleConfig httpConfig) {
221227

@@ -300,6 +306,9 @@ public Client(Logger logger,
300306
} else {
301307
this.userAgent = HttpConstants.userAgent;
302308
}
309+
310+
/* for internal testing */
311+
prepareFilename = System.getProperty("test.preparefilename");
303312
}
304313

305314
/**
@@ -1245,6 +1254,9 @@ Result processOKResponse(ByteInputStream in, Request kvRequest,
12451254
Serializer ser = kvRequest.createDeserializer(factory);
12461255
if (kvRequest instanceof QueryRequest ||
12471256
kvRequest instanceof PrepareRequest) {
1257+
prepareResponseTestHook(kvRequest, in,
1258+
serialVersionUsed,
1259+
queryVersionUsed);
12481260
res = ser.deserialize(kvRequest,
12491261
in,
12501262
serialVersionUsed,
@@ -1892,4 +1904,60 @@ private synchronized void setTopology(TopologyInfo topo) {
18921904
trace("New topology: " + topo, 1);
18931905
}
18941906
}
1907+
1908+
/*
1909+
* @hidden
1910+
* Test hook for collecting prepare responses
1911+
*/
1912+
private void prepareResponseTestHook(Request kvReq,
1913+
ByteInputStream in,
1914+
short serialVersion,
1915+
short queryVersion) throws IOException {
1916+
if (prepareFilename == null ||
1917+
!(kvReq instanceof PrepareRequest) ||
1918+
!(in instanceof NettyByteInputStream)) {
1919+
return;
1920+
}
1921+
int offset = in.getOffset();
1922+
try {
1923+
PrepareRequest pReq = (PrepareRequest) kvReq;
1924+
NettyByteInputStream nis = (NettyByteInputStream) in;
1925+
ByteBuf buf = nis.buffer();
1926+
int numBytes = buf.readableBytes();
1927+
byte[] bytes = new byte[numBytes];
1928+
for (int x = 0; x < numBytes; x++) {
1929+
bytes[x] = in.readByte();
1930+
}
1931+
try (DataOutputStream dos = new DataOutputStream(
1932+
new FileOutputStream(prepareFilename))) {
1933+
logFine(logger, "Serializing prepare response to " +
1934+
prepareFilename);
1935+
dos.write(bytes, 0, numBytes);
1936+
} catch (Exception e) {
1937+
System.err.println("Error writing serialized " +
1938+
"prepared result: " + e);
1939+
}
1940+
/* write statement, etc to properties file */
1941+
Properties props = new Properties();
1942+
props.setProperty("statement", pReq.getStatement());
1943+
props.setProperty("getplan",
1944+
String.valueOf(pReq.getQueryPlan()));
1945+
props.setProperty("serialversion",
1946+
String.valueOf(serialVersion));
1947+
props.setProperty("queryversion",
1948+
String.valueOf(queryVersion));
1949+
String fName = prepareFilename + ".props";
1950+
try (FileOutputStream fos = new FileOutputStream(fName)) {
1951+
logFine(logger, "Writing property file " + fName);
1952+
props.store(fos, "");
1953+
} catch (Exception e) {
1954+
System.err.println("Error writing serialized " +
1955+
"prepared result: " + e);
1956+
}
1957+
} catch (IOException e) {
1958+
System.err.println("Error writing serialized " +
1959+
"prepared result: " + e);
1960+
}
1961+
in.setOffset(offset);
1962+
}
18951963
}

0 commit comments

Comments
 (0)