You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.4 KiB
56 lines
1.4 KiB
package pow
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestSha2BDay(t *testing.T) {
|
|
nonce := []byte{1, 2, 3, 4, 5}
|
|
data := []byte{2, 2, 3, 4, 5}
|
|
r := NewRequest(5, nonce)
|
|
proof, err := Fulfil(r, data)
|
|
if err != nil {
|
|
t.Fatalf("Fulfil: %v", err)
|
|
}
|
|
ok, err := Check(r, proof, data)
|
|
if err != nil {
|
|
t.Fatalf("Check: %v", err)
|
|
}
|
|
if !ok {
|
|
t.Fatalf("Proof of work should be ok")
|
|
}
|
|
ok, err = Check(r, proof, nonce)
|
|
if err != nil {
|
|
t.Fatalf("Check: %v", err)
|
|
}
|
|
if ok {
|
|
t.Fatalf("Proof of work should not be ok")
|
|
}
|
|
}
|
|
|
|
func BenchmarkCheck5(b *testing.B) { benchmarkCheck(5, b) }
|
|
func BenchmarkCheck10(b *testing.B) { benchmarkCheck(10, b) }
|
|
func BenchmarkCheck15(b *testing.B) { benchmarkCheck(15, b) }
|
|
func BenchmarkCheck20(b *testing.B) { benchmarkCheck(20, b) }
|
|
|
|
func benchmarkCheck(diff uint32, b *testing.B) {
|
|
req := NewRequest(diff, []byte{1, 2, 3, 4, 5})
|
|
prf, _ := Fulfil(req, []byte{6, 7, 8, 9})
|
|
b.ResetTimer()
|
|
for n := 0; n < b.N; n++ {
|
|
Check(req, prf, []byte{6, 7, 8, 9})
|
|
}
|
|
}
|
|
|
|
func BenchmarkFulfil5(b *testing.B) { benchmarkFulfil(5, b) }
|
|
func BenchmarkFulfil10(b *testing.B) { benchmarkFulfil(10, b) }
|
|
func BenchmarkFulfil15(b *testing.B) { benchmarkFulfil(15, b) }
|
|
func BenchmarkFulfil20(b *testing.B) { benchmarkFulfil(20, b) }
|
|
|
|
func benchmarkFulfil(diff uint32, b *testing.B) {
|
|
req := NewRequest(diff, []byte{1, 2, 3, 4, 5})
|
|
b.ResetTimer()
|
|
for n := 0; n < b.N; n++ {
|
|
Fulfil(req, []byte{6, 7, 8, 9})
|
|
}
|
|
}
|
|
|