diff options
author | holisticode <holistic.computing@gmail.com> | 2018-11-27 00:05:18 +0800 |
---|---|---|
committer | Anton Evangelatov <anton.evangelatov@gmail.com> | 2018-11-27 00:05:18 +0800 |
commit | bba5fd81921ee700388b4db72db3240d32576b6c (patch) | |
tree | 7bb72f95c00feecc448f27a650b08da59a77cbf3 /p2p/protocols/reporter_test.go | |
parent | 2714e8f091117b4f110198008348bfc19233ed60 (diff) | |
download | go-tangerine-bba5fd81921ee700388b4db72db3240d32576b6c.tar go-tangerine-bba5fd81921ee700388b4db72db3240d32576b6c.tar.gz go-tangerine-bba5fd81921ee700388b4db72db3240d32576b6c.tar.bz2 go-tangerine-bba5fd81921ee700388b4db72db3240d32576b6c.tar.lz go-tangerine-bba5fd81921ee700388b4db72db3240d32576b6c.tar.xz go-tangerine-bba5fd81921ee700388b4db72db3240d32576b6c.tar.zst go-tangerine-bba5fd81921ee700388b4db72db3240d32576b6c.zip |
Accounting metrics reporter (#18136)
Diffstat (limited to 'p2p/protocols/reporter_test.go')
-rw-r--r-- | p2p/protocols/reporter_test.go | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/p2p/protocols/reporter_test.go b/p2p/protocols/reporter_test.go new file mode 100644 index 000000000..b9f06e674 --- /dev/null +++ b/p2p/protocols/reporter_test.go @@ -0,0 +1,77 @@ +// Copyright 2018 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package protocols + +import ( + "io/ioutil" + "os" + "path/filepath" + "testing" + "time" + + "github.com/ethereum/go-ethereum/log" +) + +//TestReporter tests that the metrics being collected for p2p accounting +//are being persisted and available after restart of a node. +//It simulates restarting by just recreating the DB as if the node had restarted. +func TestReporter(t *testing.T) { + //create a test directory + dir, err := ioutil.TempDir("", "reporter-test") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(dir) + + //setup the metrics + log.Debug("Setting up metrics first time") + reportInterval := 5 * time.Millisecond + metrics := SetupAccountingMetrics(reportInterval, filepath.Join(dir, "test.db")) + log.Debug("Done.") + + //do some metrics + mBalanceCredit.Inc(12) + mBytesCredit.Inc(34) + mMsgDebit.Inc(9) + + //give the reporter time to write the metrics to DB + time.Sleep(20 * time.Millisecond) + + //set the metrics to nil - this effectively simulates the node having shut down... + mBalanceCredit = nil + mBytesCredit = nil + mMsgDebit = nil + //close the DB also, or we can't create a new one + metrics.Close() + + //setup the metrics again + log.Debug("Setting up metrics second time") + metrics = SetupAccountingMetrics(reportInterval, filepath.Join(dir, "test.db")) + defer metrics.Close() + log.Debug("Done.") + + //now check the metrics, they should have the same value as before "shutdown" + if mBalanceCredit.Count() != 12 { + t.Fatalf("Expected counter to be %d, but is %d", 12, mBalanceCredit.Count()) + } + if mBytesCredit.Count() != 34 { + t.Fatalf("Expected counter to be %d, but is %d", 23, mBytesCredit.Count()) + } + if mMsgDebit.Count() != 9 { + t.Fatalf("Expected counter to be %d, but is %d", 9, mMsgDebit.Count()) + } +} |