Signal-iOS/Signal/test/PerformanceTests/GroupsPerfTest.swift
2020-10-16 10:15:16 -03:00

50 lines
1.6 KiB
Swift

//
// Copyright (c) 2020 Open Whisper Systems. All rights reserved.
//
import Foundation
import XCTest
import SignalServiceKit
class GroupsPerfTest: PerformanceBaseTest {
private let iterationCount: UInt64 = DebugFlags.fastPerfTests ? 5 : 5 * 1000
func testMembershipSerialization() {
let membership = Self.buildMembership()
measureMetrics(XCTestCase.defaultPerformanceMetrics, automaticallyStartMeasuring: true) {
for _ in 0..<iterationCount {
let data = try! Self.serialize(membership: membership)
let copy = try! Self.deserialize(data: data)
assert(membership == copy)
}
}
}
static func buildMembership() -> GroupMembership {
let memberCount: UInt = 32
var builder = GroupMembership.Builder()
for _ in 0..<memberCount {
builder.addFullMember(UUID(), role: .`normal`)
}
for _ in 0..<memberCount {
builder.addInvitedMember(UUID(), role: .`normal`, addedByUuid: UUID())
}
for _ in 0..<memberCount {
builder.addRequestingMember(UUID())
}
return builder.build()
}
static func serialize(membership: GroupMembership) throws -> Data {
try! NSKeyedArchiver.archivedData(withRootObject: membership,
requiringSecureCoding: false)
}
static func deserialize(data: Data) throws -> GroupMembership {
try! NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as! GroupMembership
}
}