@@ -27,48 +27,48 @@ class ReputationSpec extends AnyFunSuite {
2727 val (htlcId1, htlcId2, htlcId3, htlcId4, htlcId5, htlcId6, htlcId7) = (HtlcId (randomBytes32(), 1 ), HtlcId (randomBytes32(), 2 ), HtlcId (randomBytes32(), 3 ), HtlcId (randomBytes32(), 4 ), HtlcId (randomBytes32(), 5 ), HtlcId (randomBytes32(), 6 ), HtlcId (randomBytes32(), 7 ))
2828
2929 test(" basic" ) {
30- val r0 = Reputation .init(Config (enabled = true , 1 day, 1 second, 2 ))
31- assert(r0 .getConfidence(10000 msat) == 0 )
32- val r1 = r0 .attempt(htlcId1, 10000 msat)
33- val r2 = r1 .record(htlcId1, isSuccess = true )
34- val r3 = r2 .attempt(htlcId2, 10000 msat)
35- assert(r2 .getConfidence(10000 msat) === (1.0 / 3 ) +- 0.001 )
36- val r4 = r3 .attempt(htlcId3, 10000 msat)
37- assert(r3 .getConfidence(10000 msat) === (1.0 / 5 ) +- 0.001 )
38- val r5 = r4 .record(htlcId2, isSuccess = true )
39- val r6 = r5 .record(htlcId3, isSuccess = true )
40- val r7 = r6 .attempt(htlcId4, 1 msat)
41- assert(r6 .getConfidence(1 msat) === 1.0 +- 0.001 )
42- val r8 = r7 .attempt(htlcId5, 40000 msat)
43- assert(r7 .getConfidence(40000 msat) === (3.0 / 11 ) +- 0.001 )
44- val r9 = r8 .attempt(htlcId6, 10000 msat)
45- assert(r8 .getConfidence(10000 msat) === (3.0 / 13 ) +- 0.001 )
46- val r10 = r9 .record(htlcId6, isSuccess = false )
47- assert(r10 .getConfidence(10000 msat) === (3.0 / 13 ) +- 0.001 )
30+ val r = Reputation .init(Config (enabled = true , 1 day, 1 second, 2 ))
31+ assert(r .getConfidence(10000 msat, 0 ) == 0 )
32+ r .attempt(htlcId1, 10000 msat, 0 )
33+ r .record(htlcId1, isSuccess = true )
34+ r .attempt(htlcId2, 10000 msat, 0 )
35+ assert(r .getConfidence(10000 msat, 0 ) === (1.0 / 3 ) +- 0.001 )
36+ r .attempt(htlcId3, 10000 msat, 0 )
37+ assert(r .getConfidence(10000 msat, 0 ) === (1.0 / 5 ) +- 0.001 )
38+ r .record(htlcId2, isSuccess = true )
39+ r .record(htlcId3, isSuccess = true )
40+ r .attempt(htlcId4, 1 msat, 0 )
41+ assert(r .getConfidence(1 msat, 0 ) === 1.0 +- 0.001 )
42+ r .attempt(htlcId5, 40000 msat, 0 )
43+ assert(r .getConfidence(40000 msat, 0 ) === (3.0 / 11 ) +- 0.001 )
44+ r .attempt(htlcId6, 10000 msat, 0 )
45+ assert(r .getConfidence(10000 msat, 0 ) === (3.0 / 13 ) +- 0.001 )
46+ r .record(htlcId6, isSuccess = false )
47+ assert(r .getConfidence(10000 msat, 0 ) === (3.0 / 13 ) +- 0.001 )
4848 }
4949
5050 test(" long HTLC" ) {
51- val r0 = Reputation .init(Config (enabled = true , 1000 day, 1 second, 10 ))
52- assert(r0 .getConfidence(100000 msat, TimestampMilli (0 )) == 0 )
53- val r1 = r0 .attempt(htlcId1, 100000 msat, TimestampMilli (0 ))
54- val r2 = r1 .record(htlcId1, isSuccess = true , now = TimestampMilli (0 ))
55- assert(r2 .getConfidence(1000 msat, TimestampMilli (0 )) === (10.0 / 11 ) +- 0.001 )
56- val r3 = r2 .attempt(htlcId2, 1000 msat, TimestampMilli (0 ))
57- val r4 = r3 .record(htlcId2, isSuccess = false , now = TimestampMilli (0 ) + 100 .seconds)
58- assert(r4 .getConfidence(0 msat, now = TimestampMilli (0 ) + 100 .seconds) === 0.5 +- 0.001 )
51+ val r = Reputation .init(Config (enabled = true , 1000 day, 1 second, 10 ))
52+ assert(r .getConfidence(100000 msat, 0 , TimestampMilli (0 )) == 0 )
53+ r .attempt(htlcId1, 100000 msat, 0 , TimestampMilli (0 ))
54+ r .record(htlcId1, isSuccess = true , now = TimestampMilli (0 ))
55+ assert(r .getConfidence(1000 msat, 0 , TimestampMilli (0 )) === (10.0 / 11 ) +- 0.001 )
56+ r .attempt(htlcId2, 1000 msat, 0 , TimestampMilli (0 ))
57+ r .record(htlcId2, isSuccess = false , now = TimestampMilli (0 ) + 100 .seconds)
58+ assert(r .getConfidence(0 msat, 0 , now = TimestampMilli (0 ) + 100 .seconds) === 0.5 +- 0.001 )
5959 }
6060
6161 test(" exponential decay" ) {
62- val r0 = Reputation .init(Config (enabled = true , 100 seconds, 1 second, 1 ))
63- val r1 = r0 .attempt(htlcId1, 1000 msat, TimestampMilli (0 ))
64- val r2 = r1 .record(htlcId1, isSuccess = true , now = TimestampMilli (0 ))
65- assert(r2 .getConfidence(1000 msat, TimestampMilli (0 )) == 1.0 / 2 )
66- val r3 = r2 .attempt(htlcId2, 1000 msat, TimestampMilli (0 ))
67- val r4 = r3 .record(htlcId2, isSuccess = true , now = TimestampMilli (0 ))
68- assert(r4 .getConfidence(1000 msat, TimestampMilli (0 )) == 2.0 / 3 )
69- val r5 = r4 .attempt(htlcId3, 1000 msat, TimestampMilli (0 ))
70- val r6 = r5 .record(htlcId3, isSuccess = true , now = TimestampMilli (0 ))
71- assert(r6 .getConfidence(1000 msat, TimestampMilli (0 ) + 100 .seconds) == 1.5 / 2.5 )
72- assert(r6 .getConfidence(1000 msat, TimestampMilli (0 ) + 1 .hour) < 0.000001 )
62+ val r = Reputation .init(Config (enabled = true , 100 seconds, 1 second, 1 ))
63+ r .attempt(htlcId1, 1000 msat, 0 , TimestampMilli (0 ))
64+ r .record(htlcId1, isSuccess = true , now = TimestampMilli (0 ))
65+ assert(r .getConfidence(1000 msat, 0 , TimestampMilli (0 )) == 1.0 / 2 )
66+ r .attempt(htlcId2, 1000 msat, 0 , TimestampMilli (0 ))
67+ r .record(htlcId2, isSuccess = true , now = TimestampMilli (0 ))
68+ assert(r .getConfidence(1000 msat, 0 , TimestampMilli (0 )) == 2.0 / 3 )
69+ r .attempt(htlcId3, 1000 msat, 0 , TimestampMilli (0 ))
70+ r .record(htlcId3, isSuccess = true , now = TimestampMilli (0 ))
71+ assert(r .getConfidence(1000 msat, 0 , TimestampMilli (0 ) + 100 .seconds) == 1.5 / 2.5 )
72+ assert(r .getConfidence(1000 msat, 0 , TimestampMilli (0 ) + 1 .hour) < 0.000001 )
7373 }
7474}
0 commit comments