1description: "Parse logicalSessionTimeoutMinutes from replica set" 2 3uri: "mongodb://a/?replicaSet=rs" 4 5phases: [ 6 # An RSPrimary responds with a non-null logicalSessionTimeoutMinutes 7 { 8 responses: [ 9 ["a:27017", { 10 ok: 1, 11 ismaster: true, 12 hosts: ["a:27017", "b:27017", "c:27017", "d:27017", "e:27017"], 13 setName: "rs", 14 logicalSessionTimeoutMinutes: 3, 15 minWireVersion: 0, 16 maxWireVersion: 6 17 }], 18 ], 19 outcome: { 20 servers: { 21 "a:27017": { 22 type: "RSPrimary", 23 setName: "rs" 24 }, 25 "b:27017": { 26 type: "Unknown", 27 }, 28 "c:27017": { 29 type: "Unknown", 30 }, 31 "d:27017": { 32 type: "Unknown", 33 }, 34 "e:27017": { 35 type: "Unknown", 36 } 37 38 }, 39 topologyType: "ReplicaSetWithPrimary", 40 logicalSessionTimeoutMinutes: 3, 41 setName: "rs", 42 } 43 }, 44 # An RSGhost responds without a logicalSessionTimeoutMinutes 45 { 46 responses: [ 47 ["d:27017", { 48 ok: 1, 49 ismaster: false, 50 isreplicaset: true, 51 minWireVersion: 0, 52 maxWireVersion: 6 53 }], 54 ], 55 outcome: { 56 servers: { 57 "a:27017": { 58 type: "RSPrimary", 59 setName: "rs" 60 }, 61 "b:27017": { 62 type: "Unknown", 63 }, 64 "c:27017": { 65 type: "Unknown", 66 }, 67 "d:27017": { 68 type: "RSGhost", 69 }, 70 "e:27017": { 71 type: "Unknown", 72 } 73 74 }, 75 topologyType: "ReplicaSetWithPrimary", 76 logicalSessionTimeoutMinutes: 3, 77 setName: "rs", 78 } 79 }, 80 # An RSArbiter responds without a logicalSessionTimeoutMinutes 81 { 82 responses: [ 83 ["e:27017", { 84 ok: 1, 85 ismaster: false, 86 hosts: ["a:27017", "b:27017", "c:27017", "d:27017", "e:27017"], 87 setName: "rs", 88 arbiterOnly: true, 89 minWireVersion: 0, 90 maxWireVersion: 6 91 }] 92 ], 93 outcome: { 94 servers: { 95 "a:27017": { 96 type: "RSPrimary", 97 setName: "rs" 98 }, 99 "b:27017": { 100 type: "Unknown", 101 }, 102 "c:27017": { 103 type: "Unknown", 104 }, 105 "d:27017": { 106 type: "RSGhost", 107 }, 108 "e:27017": { 109 type: "RSArbiter", 110 setName: "rs" 111 } 112 113 }, 114 topologyType: "ReplicaSetWithPrimary", 115 logicalSessionTimeoutMinutes: 3, 116 setName: "rs", 117 } 118 }, 119 # An RSSecondary responds with a lower logicalSessionTimeoutMinutes 120 { 121 responses: [ 122 ["b:27017", { 123 ok: 1, 124 ismaster: false, 125 secondary: true, 126 hosts: ["a:27017", "b:27017", "c:27017", "d:27017", "e:27017"], 127 setName: "rs", 128 logicalSessionTimeoutMinutes: 2, 129 minWireVersion: 0, 130 maxWireVersion: 6 131 }], 132 ], 133 outcome: { 134 servers: { 135 "a:27017": { 136 type: "RSPrimary", 137 setName: "rs" 138 }, 139 "b:27017": { 140 type: "RSSecondary", 141 setName: "rs" 142 }, 143 "c:27017": { 144 type: "Unknown", 145 }, 146 "d:27017": { 147 type: "RSGhost", 148 }, 149 "e:27017": { 150 type: "RSArbiter", 151 setName: "rs" 152 } 153 154 }, 155 topologyType: "ReplicaSetWithPrimary", 156 logicalSessionTimeoutMinutes: 2, 157 setName: "rs", 158 } 159 }, 160 # An RSOther responds with an even lower logicalSessionTimeoutMinutes, which is ignored 161 { 162 responses: [ 163 ["c:27017", { 164 ok: 1, 165 ismaster: false, 166 setName: "rs", 167 hidden: true, 168 logicalSessionTimeoutMinutes: 1, 169 minWireVersion: 0, 170 maxWireVersion: 6 171 }], 172 ], 173 outcome: { 174 servers: { 175 "a:27017": { 176 type: "RSPrimary", 177 setName: "rs" 178 }, 179 "b:27017": { 180 type: "RSSecondary", 181 setName: "rs" 182 }, 183 "c:27017": { 184 type: "RSOther", 185 setName: "rs" 186 }, 187 "d:27017": { 188 type: "RSGhost", 189 }, 190 "e:27017": { 191 type: "RSArbiter", 192 setName: "rs" 193 } 194 }, 195 topologyType: "ReplicaSetWithPrimary", 196 logicalSessionTimeoutMinutes: 2, 197 setName: "rs", 198 } 199 }, 200 # Now the RSSecondary responds with no logicalSessionTimeoutMinutes 201 { 202 responses: [ 203 ["b:27017", { 204 ok: 1, 205 ismaster: false, 206 secondary: true, 207 hosts: ["a:27017", "b:27017", "c:27017", "d:27017", "e:27017"], 208 setName: "rs", 209 logicalSessionTimeoutMinutes: null, 210 minWireVersion: 0, 211 maxWireVersion: 6 212 }] 213 ], 214 215 # Sessions aren't supported now 216 outcome: { 217 servers: { 218 "a:27017": { 219 type: "RSPrimary", 220 setName: "rs" 221 }, 222 "b:27017": { 223 type: "RSSecondary", 224 setName: "rs" 225 }, 226 "c:27017": { 227 type: "RSOther", 228 setName: "rs" 229 }, 230 "d:27017": { 231 type: "RSGhost", 232 }, 233 "e:27017": { 234 type: "RSArbiter", 235 setName: "rs" 236 } 237 }, 238 topologyType: "ReplicaSetWithPrimary", 239 logicalSessionTimeoutMinutes: null, 240 setName: "rs", 241 } 242 } 243] 244