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 ...@@ -2,7 +2,7 @@ import XXClient
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct MessengerWaitForNodes { public struct MessengerWaitForNodes {
public typealias Progress = (Double) -> Void public typealias Progress = (NodeRegistrationReport) -> Void
public enum Error: Swift.Error { public enum Error: Swift.Error {
case notLoaded case notLoaded
...@@ -28,19 +28,15 @@ extension MessengerWaitForNodes { ...@@ -28,19 +28,15 @@ extension MessengerWaitForNodes {
throw Error.notLoaded throw Error.notLoaded
} }
func getProgress(_ report: NodeRegistrationReport) -> Double {
min(1, ((report.ratio / targetRatio) * 100).rounded() / 100)
}
var report = try cMix.getNodeRegistrationStatus() var report = try cMix.getNodeRegistrationStatus()
var retries = retries var retries = retries
onProgress(getProgress(report)) onProgress(report)
while report.ratio < targetRatio && retries > 0 { while report.ratio < targetRatio && retries > 0 {
env.sleep(sleepMS) env.sleep(sleepMS)
retries -= 1
report = try cMix.getNodeRegistrationStatus() report = try cMix.getNodeRegistrationStatus()
onProgress(getProgress(report)) retries -= 1
onProgress(report)
} }
if report.ratio < targetRatio { if report.ratio < targetRatio {
......
...@@ -18,7 +18,7 @@ final class MessengerWaitForNodesTests: XCTestCase { ...@@ -18,7 +18,7 @@ final class MessengerWaitForNodesTests: XCTestCase {
} }
func testWaitWhenHasTargetRatio() throws { func testWaitWhenHasTargetRatio() throws {
var didProgress: [Double] = [] var didProgress: [NodeRegistrationReport] = []
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.ctx.getCMix = { env.ctx.getCMix = {
...@@ -37,12 +37,14 @@ final class MessengerWaitForNodesTests: XCTestCase { ...@@ -37,12 +37,14 @@ final class MessengerWaitForNodesTests: XCTestCase {
onProgress: { didProgress.append($0) } onProgress: { didProgress.append($0) }
) )
XCTAssertNoDifference(didProgress, [1]) XCTAssertNoDifference(didProgress, [
NodeRegistrationReport(registered: 8, total: 10)
])
} }
func testWaitForTargetRatio() throws { func testWaitForTargetRatio() throws {
var didSleep: [Int] = [] var didSleep: [Int] = []
var didProgress: [Double] = [] var didProgress: [NodeRegistrationReport] = []
var reports: [NodeRegistrationReport] = [ var reports: [NodeRegistrationReport] = [
.init(registered: 0, total: 10), .init(registered: 0, total: 10),
...@@ -67,12 +69,16 @@ final class MessengerWaitForNodesTests: XCTestCase { ...@@ -67,12 +69,16 @@ final class MessengerWaitForNodesTests: XCTestCase {
) )
XCTAssertNoDifference(didSleep, [123, 123]) 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() { func testWaitTimeout() {
var didSleep: [Int] = [] var didSleep: [Int] = []
var didProgress: [Double] = [] var didProgress: [NodeRegistrationReport] = []
var reports: [NodeRegistrationReport] = [ var reports: [NodeRegistrationReport] = [
.init(registered: 0, total: 10), .init(registered: 0, total: 10),
...@@ -103,6 +109,11 @@ final class MessengerWaitForNodesTests: XCTestCase { ...@@ -103,6 +109,11 @@ final class MessengerWaitForNodesTests: XCTestCase {
} }
XCTAssertNoDifference(didSleep, [123, 123, 123]) 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