55 */
66package edu.ie3.datamodel.io.source.influxdb
77
8+ import edu.ie3.datamodel.exceptions.SourceException
89import edu.ie3.datamodel.io.connectors.InfluxDbConnector
9- import edu.ie3.datamodel.io.factory.timeseries.CosmoTimeBasedWeatherValueFactory
1010import edu.ie3.datamodel.io.factory.timeseries.IconTimeBasedWeatherValueFactory
1111import edu.ie3.datamodel.models.timeseries.individual.IndividualTimeSeries
1212import edu.ie3.datamodel.models.timeseries.individual.TimeBasedValue
13- import edu.ie3.datamodel.models.value.WeatherValue
1413import edu.ie3.test.common.IconWeatherTestData
1514import edu.ie3.test.helper.WeatherSourceTestHelper
1615import edu.ie3.util.geo.GeoUtils
1716import edu.ie3.util.interval.ClosedInterval
1817import edu.ie3.util.naming.NamingConvention
19- import org.locationtech.jts.geom.Point
2018import org.testcontainers.containers.InfluxDBContainer
2119import org.testcontainers.spock.Testcontainers
2220import org.testcontainers.utility.MountableFile
@@ -41,27 +39,41 @@ class InfluxDbWeatherSourceIconIT extends Specification implements WeatherSource
4139 influxDbContainer. copyFileToContainer(influxWeatherImportFile, " /home/weather.txt" )
4240 def execResult = influxDbContainer. execInContainer(" influx" , " -import" , " -path=/home/weather.txt" , " -precision=ms" )
4341 println " Command \" influx -import -path=/home/weather.txt -precision=ms\" returned:"
44- if (! execResult. stderr. isEmpty()) println execResult. getStderr()
45- if (! execResult. stdout. isEmpty()) println execResult. getStdout()
42+ if (! execResult. stderr. isEmpty()) println execResult. getStderr()
43+ if (! execResult. stdout. isEmpty()) println execResult. getStdout()
4644
47- def connector = new InfluxDbConnector (influxDbContainer. url," test_weather" , " test_scenario" )
45+ def connector = new InfluxDbConnector (influxDbContainer. url, " test_weather" , " test_scenario" )
4846 def weatherFactory = new IconTimeBasedWeatherValueFactory (" yyyy-MM-dd'T'HH:mm:ss[.S[S][S]]'Z'" )
4947 source = new InfluxDbWeatherSource (connector, IconWeatherTestData . coordinateSource, NamingConvention . SNAKE , weatherFactory)
5048 }
5149
50+ def " The source refuses instantiation with not compliant time stamp pattern in factory" () {
51+ given :
52+ def unCompliantPattern = " yyyy-MM-dd"
53+ def weatherFactory = new IconTimeBasedWeatherValueFactory (unCompliantPattern)
54+ def connector = new InfluxDbConnector (influxDbContainer. url, " test_weather" , " test_scenario" )
55+
56+ when :
57+ new InfluxDbWeatherSource (connector, IconWeatherTestData . coordinateSource, NamingConvention . SNAKE , weatherFactory)
58+
59+ then :
60+ def exception = thrown(SourceException )
61+ exception. message == " The given factory uses a time stamp pattern '" + unCompliantPattern + " ', that is not compliant with RFC 3339 standard. This causes, that InfluxDB results cannot be parsed. Please use 'yyyy-MM-dd'T'HH:mm:ss[.S[S][S]]'Z''."
62+ }
63+
5264 def " The test container can establish a valid connection" () {
5365 when :
54- def connector = new InfluxDbConnector (influxDbContainer. url," test_weather" , " test_scenario" )
66+ def connector = new InfluxDbConnector (influxDbContainer. url, " test_weather" , " test_scenario" )
5567 then :
5668 connector. connectionValid
5769 }
5870
5971 def " An InfluxDbWeatherSource can read and correctly parse a single value for a specific date and coordinate" () {
6072 given :
61- def expectedTimeBasedValue = new TimeBasedValue (IconWeatherTestData . TIME_15H , IconWeatherTestData . WEATHER_VALUE_67775_15H )
73+ def expectedTimeBasedValue = new TimeBasedValue (IconWeatherTestData . TIME_15H , IconWeatherTestData . WEATHER_VALUE_67775_15H )
6274
6375 when :
64- def optTimeBasedValue = source. getWeather(IconWeatherTestData . TIME_15H , IconWeatherTestData . COORDINATE_67775 )
76+ def optTimeBasedValue = source. getWeather(IconWeatherTestData . TIME_15H , IconWeatherTestData . COORDINATE_67775 )
6577
6678 then :
6779 optTimeBasedValue. present
@@ -74,15 +86,15 @@ class InfluxDbWeatherSourceIconIT extends Specification implements WeatherSource
7486 IconWeatherTestData . COORDINATE_67775 ,
7587 IconWeatherTestData . COORDINATE_67776
7688 ]
77- def timeInterval = new ClosedInterval (IconWeatherTestData . TIME_16H , IconWeatherTestData . TIME_17H )
89+ def timeInterval = new ClosedInterval (IconWeatherTestData . TIME_16H , IconWeatherTestData . TIME_17H )
7890 def timeseries67775 = new IndividualTimeSeries (null ,
7991 [
80- new TimeBasedValue (IconWeatherTestData . TIME_16H , IconWeatherTestData . WEATHER_VALUE_67775_16H ),
81- new TimeBasedValue (IconWeatherTestData . TIME_17H , IconWeatherTestData . WEATHER_VALUE_67775_17H )]
92+ new TimeBasedValue (IconWeatherTestData . TIME_16H , IconWeatherTestData . WEATHER_VALUE_67775_16H ),
93+ new TimeBasedValue (IconWeatherTestData . TIME_17H , IconWeatherTestData . WEATHER_VALUE_67775_17H )]
8294 as Set<TimeBasedValue > )
8395 def timeseries67776 = new IndividualTimeSeries (null ,
8496 [
85- new TimeBasedValue (IconWeatherTestData . TIME_16H , IconWeatherTestData . WEATHER_VALUE_67776_16H )] as Set<TimeBasedValue > )
97+ new TimeBasedValue (IconWeatherTestData . TIME_16H , IconWeatherTestData . WEATHER_VALUE_67776_16H )] as Set<TimeBasedValue > )
8698
8799 when :
88100 def coordinateToTimeSeries = source. getWeather(timeInterval, coordinates)
@@ -95,16 +107,16 @@ class InfluxDbWeatherSourceIconIT extends Specification implements WeatherSource
95107
96108 def " An InfluxDbWeatherSource can read all weather data in a given time interval" () {
97109 given :
98- def timeInterval = new ClosedInterval (IconWeatherTestData . TIME_15H , IconWeatherTestData . TIME_17H )
110+ def timeInterval = new ClosedInterval (IconWeatherTestData . TIME_15H , IconWeatherTestData . TIME_17H )
99111 def timeseries_67775 = new IndividualTimeSeries (null ,
100112 [
101- new TimeBasedValue (IconWeatherTestData . TIME_15H , IconWeatherTestData . WEATHER_VALUE_67775_15H ),
102- new TimeBasedValue (IconWeatherTestData . TIME_16H , IconWeatherTestData . WEATHER_VALUE_67775_16H ),
103- new TimeBasedValue (IconWeatherTestData . TIME_17H , IconWeatherTestData . WEATHER_VALUE_67775_17H )] as Set<TimeBasedValue > )
113+ new TimeBasedValue (IconWeatherTestData . TIME_15H , IconWeatherTestData . WEATHER_VALUE_67775_15H ),
114+ new TimeBasedValue (IconWeatherTestData . TIME_16H , IconWeatherTestData . WEATHER_VALUE_67775_16H ),
115+ new TimeBasedValue (IconWeatherTestData . TIME_17H , IconWeatherTestData . WEATHER_VALUE_67775_17H )] as Set<TimeBasedValue > )
104116 def timeseries_67776 = new IndividualTimeSeries (null ,
105117 [
106- new TimeBasedValue (IconWeatherTestData . TIME_15H , IconWeatherTestData . WEATHER_VALUE_67776_15H ),
107- new TimeBasedValue (IconWeatherTestData . TIME_16H , IconWeatherTestData . WEATHER_VALUE_67776_16H )] as Set<TimeBasedValue > )
118+ new TimeBasedValue (IconWeatherTestData . TIME_15H , IconWeatherTestData . WEATHER_VALUE_67776_15H ),
119+ new TimeBasedValue (IconWeatherTestData . TIME_16H , IconWeatherTestData . WEATHER_VALUE_67776_16H )] as Set<TimeBasedValue > )
108120
109121 when :
110122 def coordinateToTimeSeries = source. getWeather(timeInterval)
@@ -119,13 +131,13 @@ class InfluxDbWeatherSourceIconIT extends Specification implements WeatherSource
119131 def validCoordinate = IconWeatherTestData . COORDINATE_67775
120132 def invalidCoordinate = GeoUtils . xyToPoint(48d , 7d )
121133 def time = IconWeatherTestData . TIME_15H
122- def timeInterval = new ClosedInterval (IconWeatherTestData . TIME_15H , IconWeatherTestData . TIME_17H )
134+ def timeInterval = new ClosedInterval (IconWeatherTestData . TIME_15H , IconWeatherTestData . TIME_17H )
123135 def emptyTimeSeries = new IndividualTimeSeries (UUID . randomUUID(), Collections . emptySet())
124136 def timeseries_67775 = new IndividualTimeSeries (null ,
125137 [
126- new TimeBasedValue (IconWeatherTestData . TIME_15H , IconWeatherTestData . WEATHER_VALUE_67775_15H ),
127- new TimeBasedValue (IconWeatherTestData . TIME_16H , IconWeatherTestData . WEATHER_VALUE_67775_16H ),
128- new TimeBasedValue (IconWeatherTestData . TIME_17H , IconWeatherTestData . WEATHER_VALUE_67775_17H )] as Set<TimeBasedValue > )
138+ new TimeBasedValue (IconWeatherTestData . TIME_15H , IconWeatherTestData . WEATHER_VALUE_67775_15H ),
139+ new TimeBasedValue (IconWeatherTestData . TIME_16H , IconWeatherTestData . WEATHER_VALUE_67775_16H ),
140+ new TimeBasedValue (IconWeatherTestData . TIME_17H , IconWeatherTestData . WEATHER_VALUE_67775_17H )] as Set<TimeBasedValue > )
129141
130142 when :
131143 def coordinateAtDate = source. getWeather(time, invalidCoordinate)
0 commit comments