-
Notifications
You must be signed in to change notification settings - Fork 0
/
ServersFixture.scala
114 lines (86 loc) · 4.22 KB
/
ServersFixture.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package qu.service
import qu.SocketAddress
import qu.SocketAddress.id
import qu.model.QuorumSystemThresholdQuModel.{Key, OHS, ServerId}
import qu.model.{QuorumSystemThresholdQuModel, OHSUtilities, QuorumSystemThresholds}
import qu.service.AbstractGrpcQuService.ServerInfo
trait AbstractServersFixture {
self: OHSUtilities =>
val quServer1: SocketAddress
val quServer2: SocketAddress
val quServer3: SocketAddress
val quServer4: SocketAddress
var quServerIpPorts: Set[SocketAddress]
val authServerInfo: SocketAddress
def keysByServer: Map[ServerId, Map[ServerId, Key]]
val serverIds: Set[QuorumSystemThresholdQuModel.ServerId]
val quServer1WithKey: ServerInfo
val quServer2WithKey: ServerInfo
val quServer3WithKey: ServerInfo
val quServer4WithKey: ServerInfo
var quServersInfo: Set[ServerInfo]
val FaultyServersCount: Int
val MalevolentServersCount: Int
val thresholds: QuorumSystemThresholds
//ohs
val aOhsWithMethod: OHS
val aOhsWithInlineMethod: OHS
val aOhsWithInlineBarrier: OHS
val aOhsWithBarrier: OHS
val aOhsWithCopy: OHS
val InitialObject: Int
}
//"fixture-context objects" pattern from https://www.scalatest.org/user_guide/sharing_fixtures#fixtureContextObjects
//(as don't need to clean up after.)
trait ServersFixture extends AbstractServersFixture {
self: OHSUtilities =>
val quServer1: SocketAddress = SocketAddress(ip = "localhost", port = 1000)
val quServer2: SocketAddress = SocketAddress(ip = "localhost", port = 1001)
val quServer3: SocketAddress = SocketAddress(ip = "localhost", port = 1002)
val quServer4: SocketAddress = SocketAddress(ip = "localhost", port = 1003)
var quServerIpPorts: Set[SocketAddress] = Set[SocketAddress]()
quServerIpPorts = quServerIpPorts + quServer1
quServerIpPorts = quServerIpPorts + quServer2
quServerIpPorts = quServerIpPorts + quServer3
quServerIpPorts = quServerIpPorts + quServer4
val authServerInfo: SocketAddress = SocketAddress(ip = "localhost", port = 1006)
val keysByServer: Map[ServerId, Map[ServerId, Key]] = Map(
id(quServer1) -> Map(id(quServer1) -> "ks1s1",
id(quServer2) -> "ks1s2",
id(quServer3) -> "ks1s3",
id(quServer4) -> "ks1s4"),
id(quServer2) -> Map(id(quServer1) -> "ks1s2",
id(quServer2) -> "ks2s2",
id(quServer3) -> "ks2s3",
id(quServer4) -> "ks2s4"),
id(quServer3) -> Map(id(quServer1) -> "ks1s3",
id(quServer2) -> "ks2s3",
id(quServer3) -> "ks3s3",
id(quServer4) -> "ks3s4"),
id(quServer4) -> Map(id(quServer1) -> "ks1s4",
id(quServer2) -> "ks2s4",
id(quServer3) -> "ks3s4",
id(quServer4) -> "ks4s4"))
val serverIds: Set[QuorumSystemThresholdQuModel.ServerId] = keysByServer.keys.toSet
val quServer1WithKey: ServerInfo = ServerInfo(ip = quServer1.ip,
port = quServer1.port,
keySharedWithMe = keysByServer(id(quServer1))(id(quServer1)))
val quServer2WithKey: ServerInfo = ServerInfo(ip = quServer2.ip, port = quServer2.port, keySharedWithMe = keysByServer(id(quServer1))(id(quServer2)))
val quServer3WithKey: ServerInfo = ServerInfo(ip = quServer3.ip, port = quServer3.port, keySharedWithMe = keysByServer(id(quServer1))(id(quServer3)))
val quServer4WithKey: ServerInfo = ServerInfo(ip = quServer4.ip, port = quServer4.port, keySharedWithMe = keysByServer(id(quServer1))(id(quServer4)))
var quServersInfo: Set[ServerInfo] = Set[ServerInfo]()
quServersInfo = quServersInfo + quServer1WithKey
quServersInfo = quServersInfo + quServer2WithKey
quServersInfo = quServersInfo + quServer3WithKey
quServersInfo = quServersInfo + quServer4WithKey
val FaultyServersCount = 1
val MalevolentServersCount = 0
val thresholds: QuorumSystemThresholds = QuorumSystemThresholds(t = FaultyServersCount, b = MalevolentServersCount)
//ohs
val aOhsWithMethod: OHS = ohsWithMethodFor(keysByServer)
val aOhsWithInlineMethod: OHS = ohsWithInlineMethodFor(keysByServer, thresholds.r)
val aOhsWithInlineBarrier: OHS = ohsWithInlineBarrierFor(keysByServer, thresholds.r)
val aOhsWithBarrier: OHS = ohsWithBarrierFor(keysByServer)
val aOhsWithCopy: OHS = ohsWithCopyFor(serverKeys = keysByServer)
val InitialObject = 2022
}