浏览代码

fix default interval statistics handling

Jens Keim 6 年之前
父节点
当前提交
c4ffcef9cb
共有 3 个文件被更改,包括 5 次插入4 次删除
  1. 1 1
      code/Core/Statistics.py
  2. 2 2
      code_boost/src/cxx/pcap_processor.cpp
  3. 2 1
      code_boost/src/cxx/statistics_db.cpp

+ 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);
             }
         }