Skip to content

Commit 2571549

Browse files
authored
Merge pull request #617 from mysteriumnetwork/bug/session-stats-reset
session stats are now reset
2 parents 7749a27 + 53ba245 commit 2571549

2 files changed

Lines changed: 19 additions & 11 deletions

File tree

‎consumer/statistics/reporter.go‎

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@ var ErrSessionNotStarted = errors.New("session not started")
3939
// LocationDetector detects the country for session stats
4040
type LocationDetector func() location.Location
4141

42-
// Retriever allows for retrieval of statistics
43-
type Retriever interface {
42+
// StatsTracker allows for retrieval and resetting of statistics
43+
type StatsTracker interface {
4444
Retrieve() consumer.SessionStatistics
45+
Reset()
4546
}
4647

4748
// Reporter defines method for sending stats outside
@@ -55,9 +56,9 @@ type Reporter interface {
5556
type SessionStatisticsReporter struct {
5657
locationDetector LocationDetector
5758

58-
signerFactory identity.SignerFactory
59-
statisticsRetriever Retriever
60-
remoteReporter Reporter
59+
signerFactory identity.SignerFactory
60+
statisticsTracker StatsTracker
61+
remoteReporter Reporter
6162

6263
sendInterval time.Duration
6364
done chan struct{}
@@ -67,12 +68,12 @@ type SessionStatisticsReporter struct {
6768
}
6869

6970
// NewSessionStatisticsReporter function creates new session stats sender by given options
70-
func NewSessionStatisticsReporter(statisticsRetriever Retriever, remoteReporter Reporter, signerFactory identity.SignerFactory, locationDetector LocationDetector, interval time.Duration) *SessionStatisticsReporter {
71+
func NewSessionStatisticsReporter(statisticsTracker StatsTracker, remoteReporter Reporter, signerFactory identity.SignerFactory, locationDetector LocationDetector, interval time.Duration) *SessionStatisticsReporter {
7172
return &SessionStatisticsReporter{
72-
locationDetector: locationDetector,
73-
signerFactory: signerFactory,
74-
statisticsRetriever: statisticsRetriever,
75-
remoteReporter: remoteReporter,
73+
locationDetector: locationDetector,
74+
signerFactory: signerFactory,
75+
statisticsTracker: statisticsTracker,
76+
remoteReporter: remoteReporter,
7677

7778
sendInterval: interval,
7879
done: make(chan struct{}),
@@ -101,6 +102,8 @@ func (sr *SessionStatisticsReporter) start(consumerID identity.Identity, service
101102
} else {
102103
log.Debug(statsSenderLogPrefix, "Final stats sent")
103104
}
105+
// reset the stats in preparation for a new session
106+
sr.statisticsTracker.Reset()
104107
return
105108
case <-time.After(sr.sendInterval):
106109
if err := sr.send(serviceType, providerID, country, sessionID, signer); err != nil {
@@ -131,7 +134,7 @@ func (sr *SessionStatisticsReporter) stop() {
131134
}
132135

133136
func (sr *SessionStatisticsReporter) send(serviceType, providerID, country string, sessionID session.ID, signer identity.Signer) error {
134-
sessionStats := sr.statisticsRetriever.Retrieve()
137+
sessionStats := sr.statisticsTracker.Retrieve()
135138
return sr.remoteReporter.SendSessionStats(
136139
sessionID,
137140
mysterium.SessionStats{

‎consumer/statistics/tracker.go‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ func (sst *SessionStatisticsTracker) Retrieve() consumer.SessionStatistics {
4444
return sst.sessionStats
4545
}
4646

47+
// Reset resets session stats to 0
48+
func (sst *SessionStatisticsTracker) Reset() {
49+
sst.sessionStats = consumer.SessionStatistics{}
50+
}
51+
4752
// MarkSessionStart marks current time as session start time for statistics
4853
func (sst *SessionStatisticsTracker) markSessionStart() {
4954
time := sst.timeGetter()

0 commit comments

Comments
 (0)