GUI side changes for displaying stream rates
At the moment, the Tx duration for a GUID is taken to be the largest of all tx duration for that GUID across all ports. In the future, we may consider changing it to average instead of largest.
This commit is contained in:
parent
329469dd6e
commit
2868806f3f
@ -20,6 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
|||||||
#include "streamstatsmodel.h"
|
#include "streamstatsmodel.h"
|
||||||
|
|
||||||
#include "protocol.pb.h"
|
#include "protocol.pb.h"
|
||||||
|
#include "xqlocale.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QBrush>
|
#include <QBrush>
|
||||||
@ -45,12 +46,22 @@ enum {
|
|||||||
kAggrTxPkts,
|
kAggrTxPkts,
|
||||||
kAggrRxPkts,
|
kAggrRxPkts,
|
||||||
kAggrPktLoss,
|
kAggrPktLoss,
|
||||||
|
kTxDuration,
|
||||||
|
kAvgTxFrameRate,
|
||||||
|
kAvgRxFrameRate,
|
||||||
|
kAvgTxBitRate,
|
||||||
|
kAvgRxBitRate,
|
||||||
kMaxAggrStreamStats
|
kMaxAggrStreamStats
|
||||||
};
|
};
|
||||||
static QStringList aggrStatTitles = QStringList()
|
static QStringList aggrStatTitles = QStringList()
|
||||||
<< "Total\nTx Pkts"
|
<< "Total\nTx Pkts"
|
||||||
<< "Total\nRx Pkts"
|
<< "Total\nRx Pkts"
|
||||||
<< "Total\nPkt Loss";
|
<< "Total\nPkt Loss"
|
||||||
|
<< "Duration\n(secs)"
|
||||||
|
<< "Avg\nTx PktRate"
|
||||||
|
<< "Avg\nRx PktRate"
|
||||||
|
<< "Avg\nTx BitRate"
|
||||||
|
<< "Avg\nRx BitRate";
|
||||||
|
|
||||||
static const uint kAggrGuid = 0xffffffff;
|
static const uint kAggrGuid = 0xffffffff;
|
||||||
|
|
||||||
@ -149,6 +160,26 @@ QVariant StreamStatsModel::data(const QModelIndex &index, int role) const
|
|||||||
return QString("%L1").arg(aggrGuidStats_.value(guid).txPkts);
|
return QString("%L1").arg(aggrGuidStats_.value(guid).txPkts);
|
||||||
case kAggrPktLoss:
|
case kAggrPktLoss:
|
||||||
return QString("%L1").arg(aggrGuidStats_.value(guid).pktLoss);
|
return QString("%L1").arg(aggrGuidStats_.value(guid).pktLoss);
|
||||||
|
case kTxDuration:
|
||||||
|
return QString("%L1").arg(aggrGuidStats_.value(guid).txDuration);
|
||||||
|
case kAvgTxFrameRate:
|
||||||
|
return QString("%L1").arg(
|
||||||
|
aggrGuidStats_.value(guid).txPkts
|
||||||
|
/ aggrGuidStats_.value(guid).txDuration);
|
||||||
|
case kAvgRxFrameRate:
|
||||||
|
return QString("%L1").arg(
|
||||||
|
aggrGuidStats_.value(guid).rxPkts
|
||||||
|
/ aggrGuidStats_.value(guid).txDuration);
|
||||||
|
case kAvgTxBitRate:
|
||||||
|
return XLocale().toBitRateString(
|
||||||
|
(aggrGuidStats_.value(guid).txBytes
|
||||||
|
+ 24 * aggrGuidStats_.value(guid).txPkts) * 8
|
||||||
|
/ aggrGuidStats_.value(guid).txDuration);
|
||||||
|
case kAvgRxBitRate:
|
||||||
|
return XLocale().toBitRateString(
|
||||||
|
(aggrGuidStats_.value(guid).rxBytes
|
||||||
|
+ 24 * aggrGuidStats_.value(guid).rxPkts) * 8
|
||||||
|
/ aggrGuidStats_.value(guid).txDuration);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
@ -232,10 +263,18 @@ void StreamStatsModel::appendStreamStatsList(
|
|||||||
aggrGuid.rxPkts += ss.rxPkts;
|
aggrGuid.rxPkts += ss.rxPkts;
|
||||||
aggrGuid.txPkts += ss.txPkts;
|
aggrGuid.txPkts += ss.txPkts;
|
||||||
aggrGuid.pktLoss += ss.txPkts - ss.rxPkts;
|
aggrGuid.pktLoss += ss.txPkts - ss.rxPkts;
|
||||||
|
aggrGuid.rxBytes += ss.rxBytes;
|
||||||
|
aggrGuid.txBytes += ss.txBytes;
|
||||||
|
if (s.tx_duration() > aggrGuid.txDuration)
|
||||||
|
aggrGuid.txDuration = s.tx_duration(); // XXX: use largest or avg?
|
||||||
|
|
||||||
aggrAggr.rxPkts += ss.rxPkts;
|
aggrAggr.rxPkts += ss.rxPkts;
|
||||||
aggrAggr.txPkts += ss.txPkts;
|
aggrAggr.txPkts += ss.txPkts;
|
||||||
aggrAggr.pktLoss += ss.txPkts - ss.rxPkts;
|
aggrAggr.pktLoss += ss.txPkts - ss.rxPkts;
|
||||||
|
aggrAggr.rxBytes += ss.rxBytes;
|
||||||
|
aggrAggr.txBytes += ss.txBytes;
|
||||||
|
if (aggrGuid.txDuration > aggrAggr.txDuration)
|
||||||
|
aggrAggr.txDuration = aggrGuid.txDuration;
|
||||||
|
|
||||||
if (!portList_.contains(pgp))
|
if (!portList_.contains(pgp))
|
||||||
portList_.append(pgp);
|
portList_.append(pgp);
|
||||||
|
@ -61,7 +61,10 @@ private:
|
|||||||
struct AggrGuidStats {
|
struct AggrGuidStats {
|
||||||
quint64 rxPkts;
|
quint64 rxPkts;
|
||||||
quint64 txPkts;
|
quint64 txPkts;
|
||||||
|
quint64 rxBytes;
|
||||||
|
quint64 txBytes;
|
||||||
qint64 pktLoss;
|
qint64 pktLoss;
|
||||||
|
double txDuration;
|
||||||
};
|
};
|
||||||
QList<Guid> guidList_;
|
QList<Guid> guidList_;
|
||||||
QList<PortGroupPort> portList_;
|
QList<PortGroupPort> portList_;
|
||||||
|
Loading…
Reference in New Issue
Block a user