@@ -34,13 +34,14 @@ public class LiveTest {
3434 final private AtomicInteger testNumFrames = new AtomicInteger (5 );
3535
3636 final private AtomicInteger testNumGpsCoordinates = new AtomicInteger (2 );
37+ final private AtomicInteger testNumWeatherCoordinates = new AtomicInteger (2 );
3738
3839 final private AtomicBoolean failed = new AtomicBoolean (false );
3940
4041 private OSHConnect oshConnect = null ;
4142
4243 private enum SystemType {
43- FRAME , GPS
44+ FRAME , GPS , WEATHER
4445 }
4546
4647 private Thread thread = null ;
@@ -73,7 +74,7 @@ void createNode() {
7374 String lUrl = "http://127.0.0.1:8181/sensorhub" ;
7475 node = oshConnect .createNode (lUrl , isSecure , "anonymous" , "anonymous" );
7576
76- //mstinson:testing - this is only for adding configurations
77+ //mstinson:testing - this is for adding configurations
7778// thread.join();
7879 } catch (InterruptedException e ) {
7980 throw new RuntimeException (e );
@@ -85,6 +86,26 @@ void removeNode() {
8586 oshConnect .shutdown ();
8687 }
8788
89+ void validateWeatherData ( byte [] data ) {
90+ var dataObject = new JSONObject (new String (data ));
91+ assertFalse (dataObject .isEmpty ());
92+
93+ var result = dataObject .optJSONObject ("result" );
94+ assertFalse (result .isEmpty ());
95+
96+ var temperature = result .getFloat ("temperature" );
97+ assertFalse ( temperature < 0.0 );
98+
99+ var pressure = result .getFloat ("pressure" );
100+ assertFalse ( pressure < 0.0 );
101+
102+ var windDirection = result .getFloat ("windDirection" );
103+ assertFalse ( windDirection < 0.0 );
104+
105+ var windSpeed = result .getFloat ("windSpeed" );
106+ assertFalse ( windSpeed < 0.0 );
107+
108+ }
88109
89110 void validateGpsData ( byte [] data ) {
90111
@@ -109,8 +130,6 @@ void validateGpsData( byte[] data ) {
109130 var lonDelta = Math .abs (-86.60 - lon );
110131 assertFalse ( lonDelta > 0.1 );
111132
112- testNumGpsCoordinates .set (testNumGpsCoordinates .get () - 1 );
113-
114133 System .out .println ("Gps Data: Lat: " + lat + " Lon: " + lon + "\n " );
115134 }
116135
@@ -152,8 +171,6 @@ void validateFrame( byte[] data ) {
152171 failed .set (true );
153172 }
154173
155- testNumFrames .set (testNumFrames .get ()-1 );
156-
157174 System .out .println ("CLIENT Timestamp: " + instant .toString () + " CLIENT Framesize: " + frameSize + "\n " );
158175 } catch (JSONException e ) {
159176 throw new RuntimeException (e );
@@ -176,6 +193,13 @@ void TestGps() {
176193 TestSystem (systemId , SystemType .GPS , testNumGpsCoordinates );
177194 }
178195
196+ @ Test
197+ void TestWeather () {
198+ String systemId = "03ie1mkrr9r0" ; //weather driver system id
199+
200+ TestSystem (systemId , SystemType .WEATHER , testNumWeatherCoordinates );
201+ }
202+
179203 private void TestSystem ( String systemId , SystemType systemType , AtomicInteger sampleCount ) {
180204 assert null != oshConnect ;
181205
@@ -198,15 +222,23 @@ private void TestSystem( String systemId, SystemType systemType, AtomicInteger s
198222 var dataStreamManager = oshConnect .getDataStreamManager ();
199223 StreamHandler streamHandler = dataStreamManager .createDataStreamHandler (( args ) -> {
200224
201- switch (systemType ) {
202- case FRAME -> validateFrame (args .getData ());
203- case GPS -> validateGpsData (args .getData ());
225+ if ( sampleCount .get () > 0 ) {
226+
227+ switch (systemType ) {
228+ case FRAME -> validateFrame (args .getData ());
229+ case GPS -> validateGpsData (args .getData ());
230+ case WEATHER -> validateWeatherData (args .getData ());
231+ }
232+
233+ sampleCount .set (sampleCount .get ()-1 );
204234 }
235+
205236 });
206237
207238 switch (systemType ) {
208239 case FRAME -> streamHandler .setRequestFormat (RequestFormat .SWE_BINARY );
209240 case GPS -> streamHandler .setRequestFormat (RequestFormat .OM_JSON );
241+ case WEATHER -> streamHandler .setRequestFormat (RequestFormat .OM_JSON );
210242 }
211243
212244 OSHSystem cSystem = systemsResult .get (0 );
@@ -217,10 +249,10 @@ private void TestSystem( String systemId, SystemType systemType, AtomicInteger s
217249 try {
218250 var dataStreams = cSystem .discoverDataStreams ();
219251
220- var aDs = dataStreams . get ( 0 );
221-
222- assert aDs != null ;
223- streamHandler . addDataStreamListener ( aDs );
252+ for ( var dStream : dataStreams ) {
253+ assert dStream != null ;
254+ streamHandler . addDataStreamListener ( dStream ) ;
255+ }
224256
225257 } catch (ExecutionException | InterruptedException e ) {
226258 throw new RuntimeException (e );
0 commit comments