diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNodes.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNodes.swift index 39048a37f158036f2f7b346d2c18cd201807afaf..8fc118994ea6edf296c888c5c3dc6d98139eda28 100644 --- a/Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNodes.swift +++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNodes.swift @@ -2,7 +2,7 @@ import XXClient import XCTestDynamicOverlay public struct MessengerWaitForNodes { - public typealias Progress = (Double) -> Void + public typealias Progress = (NodeRegistrationReport) -> Void public enum Error: Swift.Error { case notLoaded @@ -28,19 +28,15 @@ extension MessengerWaitForNodes { throw Error.notLoaded } - func getProgress(_ report: NodeRegistrationReport) -> Double { - min(1, ((report.ratio / targetRatio) * 100).rounded() / 100) - } - var report = try cMix.getNodeRegistrationStatus() var retries = retries - onProgress(getProgress(report)) + onProgress(report) while report.ratio < targetRatio && retries > 0 { env.sleep(sleepMS) - retries -= 1 report = try cMix.getNodeRegistrationStatus() - onProgress(getProgress(report)) + retries -= 1 + onProgress(report) } if report.ratio < targetRatio { diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNodesTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNodesTests.swift index 3154758f2ee12e766a12ccf5156b63e728262497..ba1fd941bfdfc23e7c3e01d062f9895a4fb3564f 100644 --- a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNodesTests.swift +++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNodesTests.swift @@ -18,7 +18,7 @@ final class MessengerWaitForNodesTests: XCTestCase { } func testWaitWhenHasTargetRatio() throws { - var didProgress: [Double] = [] + var didProgress: [NodeRegistrationReport] = [] var env: MessengerEnvironment = .unimplemented env.ctx.getCMix = { @@ -37,12 +37,14 @@ final class MessengerWaitForNodesTests: XCTestCase { onProgress: { didProgress.append($0) } ) - XCTAssertNoDifference(didProgress, [1]) + XCTAssertNoDifference(didProgress, [ + NodeRegistrationReport(registered: 8, total: 10) + ]) } func testWaitForTargetRatio() throws { var didSleep: [Int] = [] - var didProgress: [Double] = [] + var didProgress: [NodeRegistrationReport] = [] var reports: [NodeRegistrationReport] = [ .init(registered: 0, total: 10), @@ -67,12 +69,16 @@ final class MessengerWaitForNodesTests: XCTestCase { ) XCTAssertNoDifference(didSleep, [123, 123]) - XCTAssertNoDifference(didProgress, [0, 0.43, 1]) + XCTAssertNoDifference(didProgress, [ + NodeRegistrationReport(registered: 0, total: 10), + NodeRegistrationReport(registered: 3, total: 10), + NodeRegistrationReport(registered: 8, total: 10), + ]) } func testWaitTimeout() { var didSleep: [Int] = [] - var didProgress: [Double] = [] + var didProgress: [NodeRegistrationReport] = [] var reports: [NodeRegistrationReport] = [ .init(registered: 0, total: 10), @@ -103,6 +109,11 @@ final class MessengerWaitForNodesTests: XCTestCase { } XCTAssertNoDifference(didSleep, [123, 123, 123]) - XCTAssertNoDifference(didProgress, [0, 0.43, 0.71, 0.86]) + XCTAssertNoDifference(didProgress, [ + NodeRegistrationReport(registered: 0, total: 10), + NodeRegistrationReport(registered: 3, total: 10), + NodeRegistrationReport(registered: 5, total: 10), + NodeRegistrationReport(registered: 6, total: 10), + ]) } }