소스 검색

Fixed checking of analyzer period

Lukas Cerny 4 년 전
부모
커밋
4048e32c26

+ 33 - 20
gradlew

@@ -1,5 +1,21 @@
 #!/usr/bin/env sh
 
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
 ##############################################################################
 ##
 ##  Gradle start up script for UN*X
@@ -28,7 +44,7 @@ APP_NAME="Gradle"
 APP_BASE_NAME=`basename "$0"`
 
 # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m"'
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
 
 # Use the maximum available, or set MAX_FD != -1 to use that value.
 MAX_FD="maximum"
@@ -66,6 +82,7 @@ esac
 
 CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 
+
 # Determine the Java command to use to start the JVM.
 if [ -n "$JAVA_HOME" ] ; then
     if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
@@ -109,10 +126,11 @@ if $darwin; then
     GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
 fi
 
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
     APP_HOME=`cygpath --path --mixed "$APP_HOME"`
     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
     JAVACMD=`cygpath --unix "$JAVACMD"`
 
     # We build the pattern for arguments to be converted via cygpath
@@ -138,19 +156,19 @@ if $cygwin ; then
         else
             eval `echo args$i`="\"$arg\""
         fi
-        i=$((i+1))
+        i=`expr $i + 1`
     done
     case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+        0) set -- ;;
+        1) set -- "$args0" ;;
+        2) set -- "$args0" "$args1" ;;
+        3) set -- "$args0" "$args1" "$args2" ;;
+        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
     esac
 fi
 
@@ -159,14 +177,9 @@ save () {
     for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
     echo " "
 }
-APP_ARGS=$(save "$@")
+APP_ARGS=`save "$@"`
 
 # Collect all arguments for the java command, following the shell quoting and substitution rules
 eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
 
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
-  cd "$(dirname "$0")"
-fi
-
 exec "$JAVACMD" "$@"

+ 24 - 19
gradlew.bat

@@ -1,3 +1,19 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem      https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
 @if "%DEBUG%" == "" @echo off
 @rem ##########################################################################
 @rem
@@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=.
 set APP_BASE_NAME=%~n0
 set APP_HOME=%DIRNAME%
 
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
 @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m"
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
 
 @rem Find java.exe
 if defined JAVA_HOME goto findJavaFromJavaHome
 
 set JAVA_EXE=java.exe
 %JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
+if "%ERRORLEVEL%" == "0" goto execute
 
 echo.
 echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -35,7 +54,7 @@ goto fail
 set JAVA_HOME=%JAVA_HOME:"=%
 set JAVA_EXE=%JAVA_HOME%/bin/java.exe
 
-if exist "%JAVA_EXE%" goto init
+if exist "%JAVA_EXE%" goto execute
 
 echo.
 echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@@ -45,28 +64,14 @@ echo location of your Java installation.
 
 goto fail
 
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
 :execute
 @rem Setup the command line
 
 set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
 
+
 @rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
 
 :end
 @rem End local scope for the variables with windows NT shell

+ 2 - 0
src/main/java/cz/senslog/analyzer/analysis/module/CollectorHandler.java

@@ -50,6 +50,7 @@ public abstract class CollectorHandler<I extends Data<?, ?>> extends BlockingHan
 
     @Override
     public void finish(DataFinisher<DoubleStatistics> finisher, Timestamp edgeDateTime) {
+        logger.info("Finishing collecting data at the time {}.", edgeDateTime);
         List<DoubleStatistics> finishedData = new ArrayList<>();
         for (Group group : groupsGroupById.values()) {
             List<CollectedStatistics> statistics = getCollectedStatisticsByGroup(group);
@@ -75,6 +76,7 @@ public abstract class CollectorHandler<I extends Data<?, ?>> extends BlockingHan
         long groupId = getGroupId(context.data());
         Timestamp timestamp = data.getTimestamp();
         Group group = getGroupByGroupId(groupId);
+        logger.trace("Handling data for group: {} at {}.", groupId, timestamp);
 
         if (group.getInterval() <= 0) { return; }
 

+ 1 - 0
src/main/java/cz/senslog/analyzer/core/api/HandlerContext.java

@@ -51,6 +51,7 @@ public class HandlerContext<D extends Data<?, ?>, N extends Data<?, ?>> {
 
     protected void accept(List<D> dataList) {
         Timestamp timestamp = dataList.isEmpty() ? Timestamp.now() : dataList.get(dataList.size() - 1).getTimestamp();
+        logger.info("End of sliding window is at {}.", timestamp);
 
         inputQueue = new LinkedList<>(dataList);
         collectedList = new ArrayList<>(dataList.size());

+ 1 - 1
src/main/java/cz/senslog/analyzer/core/api/HandlerInvoker.java

@@ -27,4 +27,4 @@ public class HandlerInvoker<T extends Data<?, ?>> {
     public void accept(List<T> observations) {
         handlerContext.accept(new ArrayList<>(observations));
     }
-}
+}

+ 17 - 13
src/main/java/cz/senslog/analyzer/provider/task/ObservationAnalyzerTask.java

@@ -7,6 +7,7 @@ import cz.senslog.analyzer.domain.Timestamp;
 import cz.senslog.analyzer.provider.AnalyzerTask;
 import cz.senslog.analyzer.storage.inmemory.TimestampStorage;
 import cz.senslog.analyzer.storage.permanent.repository.SensLogRepository;
+import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -21,7 +22,7 @@ public class ObservationAnalyzerTask extends AnalyzerTask<Observation> {
 
     private static final Logger logger = LogManager.getLogger(ObservationAnalyzerTask.class);
 
-    private static final int MAX_OBSERVATIONS = 100;
+    private static final int MAX_OBSERVATIONS = 200;
 
     private final TimestampStorage storage;
     private final SensLogRepository repository;
@@ -42,20 +43,22 @@ public class ObservationAnalyzerTask extends AnalyzerTask<Observation> {
     @Override
     protected List<Observation> loadData() {
 
-        Timestamp firstProvided = storage.get(FIRST_PROVIDED_INCLUSIVE, startDateTime);
-        Timestamp lastProvidedExclusive = storage.get(LAST_PROVIDED_EXCLUSIVE, Timestamp.MIN);
-        Timestamp lastProvidedInclusive = storage.get(LAST_PROVIDED_INCLUSIVE, Timestamp.MIN);
-        Timestamp committedInclusive = storage.get(LAST_COMMITTED_INCLUSIVE, Timestamp.MIN);
+        Timestamp firstProvidedIn = storage.get(FIRST_PROVIDED_INCLUSIVE, startDateTime);
+        Timestamp lastProvidedEx = storage.get(LAST_PROVIDED_EXCLUSIVE, Timestamp.MIN);
+        Timestamp lastProvidedIn = storage.get(LAST_PROVIDED_INCLUSIVE, Timestamp.MIN);
+        Timestamp committedIn = storage.get(LAST_COMMITTED_INCLUSIVE, Timestamp.MIN);
+        logger.info("firstProvidedIn: {}, lastProvidedEx: {}, lastProvidedIn: {}, committedIn: {}.",
+                firstProvidedIn, lastProvidedEx, lastProvidedIn, committedIn);
 
-        boolean previousIterationWasFinished = firstProvided.isBefore(committedInclusive) || firstProvided.isEqual(committedInclusive);
-        boolean previousIterationWasOk = previousIterationWasFinished && committedInclusive.isEqual(lastProvidedInclusive);
+        boolean previousItrWasFinished = firstProvidedIn.isBefore(committedIn) || firstProvidedIn.isEqual(committedIn);
+        Level logLevel = previousItrWasFinished ? Level.INFO : Level.WARN;
+        logger.log(logLevel, "Previous iteration finished: {}.", previousItrWasFinished);
 
         List<Observation> newObservations;
-
-        if (previousIterationWasOk) {
-            newObservations = repository.getObservationsFromTime(lastProvidedExclusive, true, MAX_OBSERVATIONS);
-       } else {
-            newObservations = repository.getObservationsFromTime(startDateTime, true, MAX_OBSERVATIONS);
+        if (previousItrWasFinished) {
+            newObservations = repository.getObservationsFromTime(lastProvidedIn, false, MAX_OBSERVATIONS);
+        } else {
+            newObservations = repository.getObservationsFromTime(firstProvidedIn, true, MAX_OBSERVATIONS);
         }
 
         if (newObservations.isEmpty()) {
@@ -69,6 +72,7 @@ public class ObservationAnalyzerTask extends AnalyzerTask<Observation> {
 
         if (observations.isEmpty()) {
             if (newObservations.size() < MAX_OBSERVATIONS) {
+                logger.info("No observations loaded.");
                 return Collections.emptyList();
             } else {
                 // TODO find a better solution -> a problem of more than MAX_OBSERVATIONS observations at the same timestamp
@@ -79,8 +83,8 @@ public class ObservationAnalyzerTask extends AnalyzerTask<Observation> {
         observations.sort(Comparator.comparing(Data::getTimestamp));
         Timestamp lastInclusive = observations.get(observations.size() - 1).getTimestamp();
 
+        logger.info("Loaded {} observations from {} to {}.", observations.size(), start, lastInclusive);
         storage.update(start, FIRST_PROVIDED_INCLUSIVE);
-
         storage.update(end, LAST_PROVIDED_EXCLUSIVE);
         storage.update(lastInclusive, LAST_PROVIDED_INCLUSIVE);
 

+ 1 - 0
src/main/java/cz/senslog/analyzer/storage/permanent/repository/SensLogRepository.java

@@ -30,6 +30,7 @@ public class SensLogRepository {
     }
 
     public List<Observation> getObservationsFromTime(Timestamp timestamp, boolean inclusive, int limit) {
+        logger.info("Getting new observations from: " + timestamp);
         if (limit <= 0) { return Collections.emptyList(); }
         return jdbi.withHandle(h -> h.createQuery(
                 "SELECT unit_id, sensor_id, observed_value, time_stamp FROM public.observations " +