Skip to content
Snippets Groups Projects
Commit f3e9c45e authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Update MessengerWaitForNodes.Progress callback

parent b5c764ae
No related branches found
No related tags found
Loading
This commit is part of merge request !33. Comments created here will be created in the context of that merge request.
......@@ -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 {
......
......@@ -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),
])
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment