Skip to content

Commit 01e61a3

Browse files
committed
skeleton of distributed test automation in place - snapshot
1 parent 7148a4b commit 01e61a3

10 files changed

Lines changed: 368 additions & 76 deletions

src/net/sharksystem/ui/messenger/cli/ProductionUI.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import net.sharksystem.fs.ExtraDataFS;
3232
import net.sharksystem.hub.peerside.ASAPHubManager;
3333
import net.sharksystem.ui.messenger.cli.commands.hubaccess.*;
34+
import net.sharksystem.ui.messenger.cli.testlanguage.TestLanguageCompiler;
3435
import net.sharksystem.utils.Log;
3536

3637
/**
@@ -146,9 +147,9 @@ public ProductionUI(String[] args) throws SharkException, IOException {
146147
// Tests - do not use those commands in other implementation beside test support environment
147148
SharkNetMessengerAppSupportingDistributedTesting snmTestSupport =
148149
(SharkNetMessengerAppSupportingDistributedTesting) sharkMessengerApp;
149-
smUI.addCommand(new UICommandBlock(snmTestSupport, smUI, "block", false));
150+
smUI.addCommand(new UICommandBlock(snmTestSupport, smUI, TestLanguageCompiler.CLI_BLOCK, false));
150151
smUI.addCommand(new UICommandScriptRQ(snmTestSupport, smUI, "scriptRQ", false));
151-
smUI.addCommand(new UICommandRelease(snmTestSupport, smUI, "release", false));
152+
smUI.addCommand(new UICommandRelease(snmTestSupport, smUI, TestLanguageCompiler.CLI_RELEASE, false));
152153
smUI.addCommand(new UICommandOrchestrateTest(snmTestSupport, smUI, "orchestrateTest", false));
153154

154155
smUI.addCommand(new UICommandSaveLog(sharkMessengerApp, smUI, "saveLog", false));

src/net/sharksystem/ui/messenger/cli/SNMDistributedTestsMessageReceivedListener.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@ public void run() {
3333
}
3434
}).start();
3535
}
36+
else if(uri.toString().equalsIgnoreCase(
37+
SharkNetMessengerAppSupportingDistributedTesting.TEST_SCRIPT_CHANNEL.toString())) {
38+
new Thread(new Runnable() {
39+
@Override
40+
public void run() {
41+
SNMDistributedTestsMessageReceivedListener.this.sharkMessengerAppTestingVersion.
42+
testScriptReceived(SharkNetMessengerAppSupportingDistributedTesting.TEST_SCRIPT_CHANNEL);
43+
}
44+
}).start();
45+
}
3646
}
3747

3848
}

src/net/sharksystem/ui/messenger/cli/SharkNetMessengerAppSupportingDistributedTesting.java

Lines changed: 224 additions & 18 deletions
Large diffs are not rendered by default.

src/net/sharksystem/ui/messenger/cli/commands/testing/PeerHostingEnvironmentDescription.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,23 @@
66
import java.io.ByteArrayInputStream;
77
import java.io.ByteArrayOutputStream;
88
import java.io.IOException;
9+
import java.net.InetAddress;
10+
import java.net.UnknownHostException;
911

1012
public class PeerHostingEnvironmentDescription {
1113
public final String ipAddress;
1214
public final String osName;
1315
public final String osVersion;
1416

17+
/** produce a description of this actual environment */
18+
public PeerHostingEnvironmentDescription() throws UnknownHostException {
19+
this(
20+
InetAddress.getLocalHost().getHostAddress(), // IP Adresse
21+
System.getProperty("os.name"), // os name
22+
System.getProperty("os.version") // os version
23+
);
24+
}
25+
1526
PeerHostingEnvironmentDescription(String ipAddress, String osName, String osVersion) {
1627
this.ipAddress = ipAddress;
1728
this.osName = osName;
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package net.sharksystem.ui.messenger.cli.commands.testing;
2+
3+
import net.sharksystem.SharkException;
4+
import net.sharksystem.hub.peerside.ASAPHubManager;
5+
import net.sharksystem.ui.messenger.cli.ProductionUI;
6+
7+
import java.io.IOException;
8+
9+
public class ScriptRunnerThread extends Thread {
10+
String peerName;
11+
String testName;
12+
String script;
13+
ProductionUI ui;
14+
15+
public ScriptRunnerThread(String peerName, String testName, String script) {
16+
this.peerName = ScriptRunnerThread.getFriendlyPeerName(peerName);
17+
this.testName = testName;
18+
this.script = script;
19+
20+
try {
21+
String[] args = new String[3];
22+
args[0] = this.peerName + "_" + this.testName;
23+
args[1] = String.valueOf(ASAPHubManager.DEFAULT_WAIT_INTERVAL_IN_SECONDS);
24+
args[2] = this.script;
25+
this.ui = new ProductionUI(args);
26+
} catch (IOException | SharkException e) {
27+
System.err.println("failed: " + testName);
28+
e.printStackTrace();
29+
}
30+
}
31+
32+
public void run() {
33+
this.ui.startCLI();
34+
}
35+
36+
public static String getFriendlyPeerName(String peerName) {
37+
if(peerName.length() != 1) return peerName; // already friendly - hopefully
38+
39+
switch (peerName) {
40+
case "0":
41+
case "A":
42+
return "Alice";
43+
case "1":
44+
case "B":
45+
return "Bob";
46+
case "2":
47+
case "C":
48+
return "Clara";
49+
case "3":
50+
case "D":
51+
return "David";
52+
case "4":
53+
case "E":
54+
return "Eve";
55+
default: return peerName;
56+
}
57+
}
58+
}

src/net/sharksystem/ui/messenger/cli/commands/testing/ScriptsRunner.java

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
package net.sharksystem.ui.messenger.cli.commands.testing;
22

3-
import net.sharksystem.SharkException;
4-
import net.sharksystem.hub.peerside.ASAPHubManager;
5-
import net.sharksystem.ui.messenger.cli.ProductionUI;
6-
7-
import java.io.*;
83
import java.lang.reflect.Field;
94
import java.util.ArrayList;
105
import java.util.HashMap;
@@ -80,45 +75,4 @@ public void runScripts() {
8075
}
8176
}
8277
}
83-
84-
private class ScriptRunnerThread extends Thread {
85-
String peerName;
86-
String testName;
87-
String script;
88-
ProductionUI ui;
89-
90-
ScriptRunnerThread(String peerName, String testName, String script) {
91-
this.peerName = getFriendlyPeerName(peerName);
92-
this.testName = testName;
93-
this.script = script;
94-
95-
try {
96-
String[] args = new String[3];
97-
args[0] = this.peerName + "_" + this.testName;
98-
args[1] = String.valueOf(ASAPHubManager.DEFAULT_WAIT_INTERVAL_IN_SECONDS);
99-
args[2] = this.script;
100-
this.ui = new ProductionUI(args);
101-
} catch (IOException | SharkException e) {
102-
System.err.println("failed: " + testName);
103-
e.printStackTrace();
104-
}
105-
}
106-
107-
public void run() {
108-
this.ui.startCLI();
109-
}
110-
}
111-
112-
private static String getFriendlyPeerName(String peerName) {
113-
if(peerName.length() != 1) return peerName; // already friendly - hopefully
114-
115-
switch (peerName) {
116-
case "A": return "Alice";
117-
case "B": return "Bob";
118-
case "C": return "Clara";
119-
case "D": return "David";
120-
case "E": return "Eve";
121-
default: return peerName;
122-
}
123-
}
12478
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package net.sharksystem.ui.messenger.cli.commands.testing;
2+
3+
import net.sharksystem.asap.ASAPException;
4+
import net.sharksystem.asap.utils.ASAPSerialization;
5+
6+
import java.io.ByteArrayInputStream;
7+
import java.io.ByteArrayOutputStream;
8+
import java.io.IOException;
9+
10+
public class TestScriptDescription {
11+
public final String ipAddress;
12+
public final int peerIndex;
13+
public final String script;
14+
public int testNumber;
15+
16+
public TestScriptDescription(String ipAddress, int peerIndex, String script, int testNumber) {
17+
this.ipAddress = ipAddress;
18+
this.peerIndex = peerIndex;
19+
this.script = script;
20+
this.testNumber = testNumber;
21+
}
22+
23+
public TestScriptDescription(byte[] serialisedMessage) throws IOException, ASAPException {
24+
ByteArrayInputStream bais = new ByteArrayInputStream(serialisedMessage);
25+
26+
this.ipAddress = ASAPSerialization.readCharSequenceParameter(bais);
27+
this.peerIndex = ASAPSerialization.readIntegerParameter(bais);
28+
this.script = ASAPSerialization.readCharSequenceParameter(bais);
29+
this.testNumber = ASAPSerialization.readIntegerParameter(bais);
30+
}
31+
32+
public byte[] getMessageBytes() throws IOException {
33+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
34+
35+
ASAPSerialization.writeCharSequenceParameter(this.ipAddress, baos);
36+
ASAPSerialization.writeIntegerParameter(this.peerIndex, baos);
37+
ASAPSerialization.writeCharSequenceParameter(this.script, baos);
38+
ASAPSerialization.writeIntegerParameter(this.testNumber, baos);
39+
40+
return baos.toByteArray();
41+
}
42+
43+
public String toString() {
44+
return "ip: " + this.ipAddress + " | peerIndex: " + this.peerIndex + " | script: " + this.script;
45+
}
46+
}

src/net/sharksystem/ui/messenger/cli/commands/testing/UICommandScriptRQ.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,9 @@ protected void execute() throws Exception {
2828
SharkNetMessengerComponent messenger = this.getSharkMessengerApp().getSharkMessengerComponent();
2929

3030
// collect information
31-
PeerHostingEnvironmentDescription scriptRQMessage = new PeerHostingEnvironmentDescription(
32-
InetAddress.getLocalHost().getHostAddress(), // IP Adresse
33-
System.getProperty("os.name"), // os name
34-
System.getProperty("os.version") // os version
35-
);
36-
31+
PeerHostingEnvironmentDescription scriptRQMessage = new PeerHostingEnvironmentDescription();
3732

38-
// send message
33+
// send message
3934
messenger.sendSharkMessage(
4035
SharkNetMessengerAppSupportingDistributedTesting.PEER_HOST_DESCRIPTION_FORMAT,
4136
scriptRQMessage.getMessageBytes(),

src/net/sharksystem/ui/messenger/cli/testlanguage/TestLanguageCompiler.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ public class TestLanguageCompiler {
1616

1717
public static final String CLI_OPEN_TCP = "openTCP";
1818
public static final String CLI_CONNECT_TCP = "connectTCP";
19-
private static final String CLI_BLOCK = "block";
20-
private static final String CLI_RELEASE = "release";
21-
private static final String CLI_EXIT = "exit";
19+
public static final String CLI_BLOCK = "block";
20+
public static final String CLI_RELEASE = "release";
21+
public static final String CLI_EXIT = "exit";
22+
public static final String CLI_WAIT = "wait";
2223

2324
/**
2425
* sentence -> command SEPARATOR command
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package net.sharksystem.messenger.testScripts;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
public class TestScriptDescriptionTests {
6+
@Test
7+
public void test1() {
8+
9+
}
10+
}

0 commit comments

Comments
 (0)