From bd8cb495ff0b53455e630dc509ae639e8b8d5493 Mon Sep 17 00:00:00 2001 From: Sophia Koehler Date: Tue, 2 Apr 2024 15:03:25 +0200 Subject: [PATCH] refactor(fund): Change to loop. Signed-off-by: Sophia Koehler --- channel/funder_test.go | 4 ++-- channel/test/fund.go | 52 ++++++++++++++++++------------------------ 2 files changed, 24 insertions(+), 32 deletions(-) diff --git a/channel/funder_test.go b/channel/funder_test.go index b3466d3..373ccb9 100644 --- a/channel/funder_test.go +++ b/channel/funder_test.go @@ -198,7 +198,7 @@ func testFunderCrossOverFunding(t *testing.T, n int) { func TestEgoisticParticipantFunding(t *testing.T) { // Peers will randomly fund for each other. - for i := 0; i < 10; i++ { + for i := 0; i < 30; i++ { name := fmt.Sprintf("Egoistic Funding %v", i) t.Run(name, func(t *testing.T) { testEgoisticParticipantFunding(t) }) } @@ -235,7 +235,7 @@ func testEgoisticParticipantFunding(t *testing.T) { require.True(t, len(finishTimes) == n, "Length of indexes must be n") require.NoError(t, err) - t.Logf("Finish Times: %v", finishTimes) + t.Logf("finishTimes: %v", finishTimes) // Check if finish time of egoistic funder is larger than finish time of non-egoistic funder. correct := finishTimes[egoisticIndex].Time > finishTimes[int(math.Abs(float64(1-egoisticIndex)))].Time // Use require.True to compare the finish times diff --git a/channel/test/fund.go b/channel/test/fund.go index 66aa6af..0c30084 100644 --- a/channel/test/fund.go +++ b/channel/test/fund.go @@ -36,38 +36,30 @@ func FundAll(ctx context.Context, funders []*channel.Funder, reqs []*pchannel.Fu var mutex sync.Mutex var wg sync.WaitGroup - wg.Add(2) + wg.Add(len(funders)) - go func() { - defer wg.Done() - startTime := time.Now() - err := funders[egoisticIndex].Fund(ctx, *reqs[egoisticIndex]) - require.NoError(t, err) - finishTime := time.Now() - require.NoError(t, err) - mutex.Lock() - finishTimes[egoisticIndex] = FunderFinishTime{ - Index: egoisticIndex, - Time: finishTime.Sub(startTime), - } - mutex.Unlock() - }() + waitTime := 2 * time.Second - go func() { - defer wg.Done() - time.Sleep(2 * time.Second) - startTime := time.Now() - err := funders[1-egoisticIndex].Fund(ctx, *reqs[1-egoisticIndex]) - require.NoError(t, err) - finishTime := time.Now() - require.NoError(t, err) - mutex.Lock() - finishTimes[1-egoisticIndex] = FunderFinishTime{ - Index: 1 - egoisticIndex, - Time: finishTime.Sub(startTime), - } - mutex.Unlock() - }() + for i := range funders { + i := i + go func() { + defer wg.Done() + if i != egoisticIndex { + time.Sleep(waitTime) + } + startTime := time.Now() + err := funders[i].Fund(ctx, *reqs[i]) + require.NoError(t, err) + finishTime := time.Now() + mutex.Lock() + finishTimes[i] = FunderFinishTime{ + Index: i, + Time: finishTime.Sub(startTime), + } + mutex.Unlock() + }() + + } wg.Wait() return finishTimes, nil