Skip to content

Supported scenarios (in progress)

Thomas Schwotzer edited this page Nov 19, 2025 · 51 revisions

Introduction

Thanks for supporting this project by running tests.

Combinatoric explosion - need help

We are extremely grateful for each test you can provide since we deal with a variant of a combinatoric explosion. Take our basic tests. There are just peer A and B. One sends a message. This message is expected to be received by the other peer after an ASAP encounter. Easy. ASAP already implies variants: a message can be sent before and during an encounter. We have two variants. A or B sends a message. Isn't that the same? Think so but better safe than sorry. We have four variants in this case.

It's getting worse. Take test A1. Peer A sends a message during an encounter with Peer B. One simple test. Both peers can run on a single computer like e.g. Windows, Ubuntu or Mac. Makes 3 variants. Peers can run on different machines same OS in a LAN. Makes 3 more tests. A can run on Windows, B on Ubuntu etc. pp. You see the picture. Finally, peers can run on different machines and in different local networks.

Any helping hand is welcome.

Test structure

Here is the general test structure: Test scripts are part of this git repository. The script folder comprises all test scrips. Note: Test are software and have version. Version 1 of a basic test A1 folder contains just two scripes - each for peer A and B. This page offers a complete list of all test scripts available.

Test results are also part of this repository. Folder testRuns contains test results from successful tests. testRunsFailed is meant to store logs from failed tests. There should be a folder for each test scenario/version. Subfolders are the storage for logs produced by a tests. The failed test folder is the source for our debugging session.

How to run a test.

First of all, take your time. Tests are meant to find bugs in a software. Finding bugs in tests tends to be more difficult. The most annoying problems are produced when the test environment is not set up accordingly. Empty folders are usually required to run a test. This software has a memory and that is stored in files.

Take your time :)

You better have got writing privileges in the test-folder.

Preparation:

  • pick es test scenario in the test&plan (see tables below)
  • create an empty directory
  • make sure you have test the most recent release in your directory
  • copy test script(s) into your empty directory - tables below provide a more specific reference to the required scripts

Execution:

  • launch each peer, namely the messenger cli like this: cat peerA.txt | java -jar SharkNetMessengerCLI.jar Alice.
  • There are at least two peers involved: make sure your peers start (more or less) synchronously - adjust wait periods if necessary

Checking results

  • document your result by adding a line in the test&plan document; commit & push this file
  • Add a new folder in the testRunsFailed- or testRuns
  • upload logs
  • commit & push

Thank your very much

TCP Chain - Building Blocks

Two peers exchange a single message in variants.

Scenario #bytes Action Sequence Expected Result Scripts Tests
CoreA1 <100 B opens port; A connects to B; A sends message B received message v1 plan&results
CoreA2 <100 A opens port; B connects to A; B sends message A received message v1 plan&results
CoreB1 <100 A sends message; B opens port; A connects B B received message v1 plan&results
CoreB2 <100 B sends message; A opens port; B connects to A A received message v1 plan&results

TCP Chain - Combined Scenarios

Scenario #Peers Message Action Sequence Expected Result Scripts
CoreA1_Dis 2 char Core_A1; A disconnects from B; Core_A1. B received 2 messages v1

The action sequences of the integrated core scenarios will be referred to by the names of the scenarios.

Scenario # Peer Count Message Action Sequence Expected Result PeerA PeerB
CoreA1_Dis 2 char Core_A1,
A disconnects from B, Core_A1.
B receives the message. wait 6000
connectTCP localhost 4444
wait 6000
sendMessage TCPChain_CoreA1 sn/characters
closeEncounter 1
wait 3000
wait 6000
connectTCP localhost 4444
wait 6000
sendMessage TCPChain_CoreA1 sn/characters
wait 5000
lsMessages
exit
openTCP 4444
wait 36000
wait 5000
lsMessages
exit
CoreA2-Dis 2 char Core_A2,
B disconnects from A, Core_A2.
A receives the message. openTCP 4444
wait 36000
wait 5000
lsMessages
exit
wait 6000
connectTCP localhost 4444
wait 6000
sendMessage TCPChain_CoreA2 sn/characters
closeEncounter 1
wait 3000
wait 6000
connectTCP localhost 4444
wait 6000
sendMessage TCPChain_CoreA2 sn/characters
wait 5000
lsMessages
exit
CoreB1-Dis 2 char Core_B1,
A disconnects from B, Core_B1.
B receives the message. wait 2000
sendMessage TCPChain_CoreB1 sn/characters
wait 6000
connectTCP FILLER_IP 4444
closeEncounter 1
wait 6000
wait 2000
sendMessage TCPChain_CoreB1 sn/characters
wait 6000
connectTCP FILLER_IP 4444
wait 6000
wait 5000
lsMessages
exit
openTCP 4444
wait 36000
wait 5000
lsMessages
exit
CoreB2-Dis 2 char Core_B2,
B disconnects from A, Core_B2.
A receives the message. openTCP 4444
wait 36000
wait 5000
lsMessages
exit
wait 2000
sendMessage TCPChain_CoreB2 sn/characters
wait 6000
connectTCP localhost 4444
closeEncounter 1
wait 6000
wait 2000
sendMessage TCPChain_CoreB2
sn/characters
wait 6000
connectTCP localhost 4444
wait 6000
wait 5000
lsMessages
exit

Additional Combinations

A <-> B B <-> C Result Environment
TC001 CoreA1 CoreA1
TC002 CoreA1 CoreA2
TC003 CoreA2 CoreA1
TC004 CoreA2 CoreA2
TC005 CoreA1 CoreB1
TC006 CoreA1 CoreB2
TC007 CoreA2 CoreB1
TC008 CoreA2 CoreB2
TC009 CoreB1 CoreA1
TC010 CoreB1 CoreA2
TC011 CoreB2 CoreA1
TC012 CoreB2 CoreA2
TC013 CoreB1 CoreB1
TC014 CoreB1 CoreB2
TC015 CoreB2 CoreB1
TC016 CoreB2 CoreB2
TC017 CoreA1 CoreA1_Dis
TC018 CoreA1 CoreA2_Dis
TC019 CoreA1 CoreB1_Dis
TC020 CoreA1 CoreB2_Dis
TC021 CoreA2 CoreA1_Dis
TC022 CoreA2 CoreA2_Dis
TC023 CoreA2 CoreB1_Dis
TC024 CoreA2 CoreB2_Dis
TC025 CoreA1_Dis CoreA1
TC026 CoreA1_Dis CoreA2
TC027 CoreA1_Dis CoreB1
TC028 CoreA1_Dis CoreB2
TC029 CoreA2_Dis CoreA1
TC030 CoreA2_Dis CoreA2
TC031 CoreA2_Dis CoreB1
TC032 CoreA2_Dis CoreB2
TC033 CoreA1_Dis CoreA1_Dis
TC034 CoreA1_Dis CoreA2_Dis
TC035 CoreA1_Dis CoreB1_Dis
TC036 CoreA1_Dis CoreB2_Dis
TC037 CoreA2_Dis CoreA1_Dis
TC038 CoreA2_Dis CoreA2_Dis
TC039 CoreA2_Dis CoreB1_Dis
TC040 CoreA2_Dis CoreB2_Dis

Hub

Prerequisite

Scenario # Peer Count Message Action Sequence Expected Result Commands
Hub_Host 1 - Peer 0 (Host) starts the hub in a separate process The hub is ready for connections. startHub 6907
wait 60000
stopHub 6907
exit

Core Scenarios

Scenario # Peer Count Message Action Sequence Expected Result PeerA PeerB
Hub_Core1 2 - -hubHost
- Peer A connects to the Hub
- Peer B connects to the Hub.
Peer A and Peer B have an encounter through the Hub. wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
lsMessages
exit
wait 500
wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 500
lsMessages
exit
Hub_Core2 2 - -hubHost
- Peer B connects to the Hub
- Peer A connects to the Hub.
Peer A and Peer B have an encounter through the Hub. wait 500
wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 500
lsMessages
exit
 wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
lsMessages
exit
Hub_A1 2 char Hub_Host, Hub_Core1, Peer A sends a message Peer B receives the message. wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
sendMessage HUBCoreA1_ sn/characters
wait 5000
lsMessages
exit
wait 500
wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 500
wait 5000
lsMessages
exit
Hub_A2 2 char Hub_Host, Hub_Core2, Peer B sends a message Peer A receives the message. wait 500
wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 500
sendMessage HUBCoreA2_ sn/characters
wait 5000
lsMessages
exit
wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 5000
lsMessages
exit
Hub_B1 2 char Hub_Host, Peer A sends a message, Hub_Core1 Peer B receives the message. sendMessage HUBCoreB1_ sn/characters
wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 6000
lsMessages
exit
wait 500
wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 500
wait 6000
lsMessages
exit
Hub_B2 2 char Hub_Host, Peer B sends a message, Hub_Core2 Peer A receives the message. sendMessage HUBCoreB2_ sn/characters
wait 500
wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 500
wait 6000
lsMessages
exit
wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 6000
lsMessages
exit

Combined Scenarios

Scenario # Peer Count Message Action Sequence Expected Result PeerA PeerB
Hub_DisA1 2 char Hub_Host, Hub_Core1, Peer B disconnects from the hub, Peer A sends a message. Peer B receives the message. wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 6000
sendMessage HUBCoreA1_Dis_ sn/characters
wait 24000
wait 5000
lsMessages
exit
wait 500
wait 2000
connectHub
localhost 6907
wait 2000
wait 1000y
lsEncounter
wait 500
disconnectHub 1
wait 24000
wait 5000
lsMessages
exit
Hub_DisB1 2 char Hub_Host, Hub_Core2, Peer A disconnects from the hub, Peer B sends a message. Peer A receives the message. wait 500
wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 500
disconnectHub 1
wait 12000
wait 6000
lsMessages
exit
wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 6000
sendMessage HUBCoreB1_Dis_ sn/characters
wait 6000
lsMessages
exit
Hub_DisA2 2 char Hub_Host, Hub_Core1, Peer B disconnects from the hub, Peer B sends a message. Peer A receives the message. wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 6000
wait 5000
lsMessages
exit
wait 500
wait 2000
connectHub localhost 6907
wait 2000
wait 1000
lsEncounter
wait 500
disconnectHub 1
wait 12000
sendMessage HUBCoreA2_Dis_ sn/characters
wait 5000
lsMessages
exit
Hub_DisB2 2 char Hub_Host, Hub_Core2, Peer A disconnects from the hub, Peer A sends a message. Peer B receives the message. wait 2000
connectHub FILLER_IP 6907
wait 2000
wait 1000
lsEncounter
wait 6000
disconnectHub 1
wait 3000
sendMessage HUBCoreB2_Dis sn/characters
wait 5000
lsMessages
exit
wait 500
wait 2000
connectHub FILLER_IP 6907
wait 2000
wait 1000
lsEncounter
wait 500
disconnectHub 1
wait 12000
wait 5000
lsMessages
exit

Test Runs

9.11.2025

12 tests passed, 6 tests failed. (Test protocol txt format incompatible... couldn't include. //todo) Files here: test files

Clone this wiki locally