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