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
2 merge requests!102Release 1.0.0,!33XXMessengerClient
......@@ -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.
Finish editing this message first!
Please register or to comment