Skip to content

4.1.2 Flood Test Reproduction Guide

Kadosa Koltai edited this page Oct 17, 2019 · 1 revision

If you want to do this test for yourself, here is what you have to know.

Requirements

This test is designed to run on three physically separate machines, to actually have network between them.

  • The parts of the test should be started sequentially, in the order of Machine B, Machine C, then Machine A.
  • The parts of the test should see each other based on their IP address, i.e. should either be on the same subnet or have public IP addresses.

Each machine has the following requirements:

  • Windows 10
    • Not tested on any other operating system
    • The Arrowhead portion should run on any OS that can run Java 12
    • The MQTT portion will probably run on anything that can run the Mosquitto server and Java 12, beyond that the clients should run with any other MQTT server implementation that Paho is compatible with
    • The DDS portion will probably run on anything RTI DDS Connext and Java 12 runs on
  • Java 12
    • Run the project with the -Xmx4g or -Xmx8g option. See here
    • Not tested with any other version
    • Java 11 should be compatible with everything
    • Java 8 is not
  • Eclipse IDE 2019-06
    • Not tested with any other version
    • Will probably run on older 4.* versions
    • Packing into .jar might be possible
  • The Constants should be updated in Constants.java file
    • The SERVER_IP should be set the server's IP address
    • The *PORT and *NAME constants should remain consistent
  • Arrowhead:
    • Put the eu folder (unzipped from lib.zip, in the repository root) in the machine's Maven local repository
      • This is C:\Users(username).m2\repository by default
      • Maven should not be actually needed
      • Send an email to the Arrowhead Framework folks to make a client library, and publish it
  • RTI DDS Connext:
    • Was tested with 5.3.1 and 6.0.0
    • Configure RTI DDS Connext dependencies
    • Add (connext root)/lib/java/nddsjava.jar to the project
    • Make sure the environmental variables are correct

Machine A additional requirements:

  • Open up port for Arrowhead Sensor A: 8498 by default, configurable in the Constants.java file

Machine B additional requirements:

  • Arrowhead System Registry, Authorization, and Orchestrator Core Systems. See the official readme or our quick guide.
  • Mosquitto. See the official download page.
  • Certain ports should be opened in the firewall.
    • For Mosquitto: 1883 by default, configurable.
    • For Arrowhead: 8440 and 8442 by default, configurable. (In their .conf files)
    • For Arrowhead Sensor B: 8499 by default, configurable in the Constants.java file

Machine C additional requirements:

  • Open up ports for Arrowhead Processors: 8500-8550 by default, configurable in the Constants.java file, with the *_BASE_PORT and MAX.

Running the Test

  1. Make sure the servers are running and the ports are open
  2. Star Machine B by running the MachineBStarter.java as java application
  3. Star Machine C by running the MachineCStarter.java as java application
  4. Star Machine A by running the MachineAStarter.java as java application

For quick reference, use the UnifiedStarter, which quickly runs just one test cycle. Set verse to the framework to test, and q to the amount of Processors desired.

Configuration

If you want to choose which tests to run, there are three bools at the beginning of TestOrganizer::start. Set those you don't want to run to false.

Changing the constant MAX in the Constants.java file changes the maximum number of processors the test will go to.