Browse Source

fix default interval statistics handling

Jens Keim 5 years ago
parent
commit
c4ffcef9cb

+ 1 - 1
code/Core/Statistics.py

@@ -87,7 +87,7 @@ class Statistics:
         time_start = time.clock()
 
         # Make sure user specified intervals are a list
-        if intervals is None or intervals is []:
+        if intervals is None or intervals == []:
             intervals = [0.0]
         elif not isinstance(intervals, list):
             intervals = [intervals]

+ 2 - 2
code_boost/src/cxx/pcap_processor.cpp

@@ -179,7 +179,7 @@ void pcap_processor::collect_statistics(const py::list& intervals) {
         std::vector<std::chrono::duration<int, std::micro>> timeIntervals;
         std::vector<std::chrono::microseconds> barriers;
 
-        if (intervals.size() == 0) {
+        if (intervals.size() == 0 || intervals[0].cast<double>() == 0) {
             int timeIntervalsNum = 100;
             std::chrono::microseconds lastTimestamp = stats.getTimestampLastPacket();
             std::chrono::microseconds captureDuration = lastTimestamp - firstTimestamp;
@@ -188,7 +188,7 @@ void pcap_processor::collect_statistics(const py::list& intervals) {
                 return;
             }
             timeInterval_microsec = captureDuration.count() / timeIntervalsNum;
-            stats.setDefaultInterval(static_cast<double>(timeInterval_microsec));
+            stats.setDefaultInterval(static_cast<int>(timeInterval_microsec));
             intervalStartTimestamp.push_back(firstTimestamp);
             std::chrono::duration<int, std::micro> timeInterval(timeInterval_microsec);
             std::chrono::microseconds barrier = timeInterval;

+ 2 - 1
code_boost/src/cxx/statistics_db.cpp

@@ -587,7 +587,8 @@ void statistics_db::writeStatisticsInterval(const std::unordered_map<std::string
         if (defaultInterval != 0.0) {
             is_default = "1";
             std::chrono::duration<int, std::micro> defaultTimeInterval(defaultInterval);
-            if (timeIntervals.empty()) {
+            if (timeIntervals.empty() || timeIntervals[0].count() == 0) {
+                timeIntervals.clear();
                 timeIntervals.push_back(defaultTimeInterval);
             }
         }