mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-18 15:10:03 +00:00
* Updates nonce generation to adhere to fifo channel buffer before request executes by routine * removed unused variables, lns etc * Fix requested changes and added in timer that disengages lock if out of scope error occurs * Fixed woopsy daisy issue * Add benchmark, reduce time in force to unlock before stack insertion, add nil check for edge case * Remove unusued waitgroup field * use return nonce.Value and method, rm redundant nonce code, fix tests. * Fix linter issue: unnecessary conversion
81 lines
1.5 KiB
Go
81 lines
1.5 KiB
Go
package nonce
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestInc(t *testing.T) {
|
|
var nonce Nonce
|
|
nonce.Set(1)
|
|
nonce.Inc()
|
|
expected := Value(2)
|
|
result := nonce.Get()
|
|
if result != expected {
|
|
t.Errorf("Test failed. Expected %d got %d", expected, result)
|
|
}
|
|
}
|
|
|
|
func TestGet(t *testing.T) {
|
|
var nonce Nonce
|
|
nonce.Set(112321313)
|
|
expected := Value(112321313)
|
|
result := nonce.Get()
|
|
if expected != result {
|
|
t.Errorf("Test failed. Expected %d got %d", expected, result)
|
|
}
|
|
}
|
|
|
|
func TestGetInc(t *testing.T) {
|
|
var nonce Nonce
|
|
nonce.Set(1)
|
|
expected := Value(2)
|
|
result := nonce.GetInc()
|
|
if expected != result {
|
|
t.Errorf("Test failed. Expected %d got %d", expected, result)
|
|
}
|
|
}
|
|
|
|
func TestSet(t *testing.T) {
|
|
var nonce Nonce
|
|
nonce.Set(1)
|
|
expected := Value(1)
|
|
result := nonce.Get()
|
|
if expected != result {
|
|
t.Errorf("Test failed. Expected %d got %d", expected, result)
|
|
}
|
|
}
|
|
|
|
func TestString(t *testing.T) {
|
|
var nonce Nonce
|
|
nonce.Set(12312313131)
|
|
expected := "12312313131"
|
|
result := nonce.String()
|
|
if expected != result {
|
|
t.Errorf("Test failed. Expected %s got %s", expected, result)
|
|
}
|
|
|
|
v := nonce.Get()
|
|
if expected != v.String() {
|
|
t.Errorf("Test failed. Expected %s got %s", expected, result)
|
|
}
|
|
}
|
|
|
|
func TestNonceConcurrency(t *testing.T) {
|
|
var nonce Nonce
|
|
nonce.Set(12312)
|
|
|
|
for i := 0; i < 1000; i++ {
|
|
go nonce.Inc()
|
|
}
|
|
|
|
// Allow sufficient time for all routines to finish
|
|
time.Sleep(time.Second)
|
|
|
|
result := nonce.Get()
|
|
expected := Value(12312 + 1000)
|
|
if expected != result {
|
|
t.Errorf("Test failed. Expected %d got %d", expected, result)
|
|
}
|
|
}
|