File: hello-network-error.yml

package info (click to toggle)
golang-mongodb-mongo-driver 1.8.1%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 18,500 kB
  • sloc: perl: 533; ansic: 491; python: 432; makefile: 187; sh: 72
file content (156 lines) | stat: -rw-r--r-- 4,674 bytes parent folder | download | duplicates (2)
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#hello Test SDAM error handling.
runOn:
    # failCommand appName requirements
    - minServerVersion: "4.9"

database_name: &database_name "sdam-tests"
collection_name: &collection_name "hello-network-error"

data: []

tests:
  - description: Network error on Monitor handshake
    # Configure the initial handshake to fail with a network error.
    # Use times: 2 so that the RTT hello fails as well.
    failPoint:
      configureFailPoint: failCommand
      mode: { times: 2 }
      data:
          failCommands: ["hello", "isMaster"]
          appName: networkErrorHandshakeTest
          closeConnection: true
    clientOptions:
      retryWrites: false
      connectTimeoutMS: 250
      heartbeatFrequencyMS: 500
      appname: networkErrorHandshakeTest
    operations:
      # The network error on the initial handshake should mark the server
      # Unknown (emitting a ServerDescriptionChangedEvent) and clear the pool.
      - name: waitForEvent
        object: testRunner
        arguments:
          event: ServerMarkedUnknownEvent
          count: 1
      # Perform an operation to ensure the node is discovered.
      - name: insertMany
        object: collection
        arguments:
          documents:
            - _id: 1
            - _id: 2
      # We cannot assert the server was marked Unknown and pool was cleared an
      # exact number of times because the RTT hello may or may not have
      # triggered this failpoint as well.
      # - name: assertEventCount
      #   object: testRunner
      #   arguments:
      #     event: ServerMarkedUnknownEvent
      #     count: 1
      # - name: assertEventCount
      #   object: testRunner
      #   arguments:
      #     event: PoolClearedEvent
      #     count: 1

    expectations:
      - command_started_event:
          command:
            insert: *collection_name
            documents:
              - _id: 1
              - _id: 2
          command_name: insert
          database_name: *database_name

    outcome:
      collection:
        data:
          - {_id: 1}
          - {_id: 2}

  - description: Network error on Monitor check
    clientOptions:
      retryWrites: false
      connectTimeoutMS: 250
      heartbeatFrequencyMS: 500
      appname: networkErrorCheckTest
    operations:
      # Perform an operation to ensure the node is discovered.
      - name: insertMany
        object: collection
        arguments:
          documents:
            - _id: 1
            - _id: 2
      # Configure the next streaming hello check to fail with a non-timeout
      # network error. Use times: 2 to ensure that the the Monitor check fails
      # since the RTT hello may trigger this failpoint as well.
      - name: configureFailPoint
        object: testRunner
        arguments:
          failPoint:
            configureFailPoint: failCommand
            mode: { times: 2 }
            data:
                failCommands: ["hello", "isMaster"]
                appName: networkErrorCheckTest
                closeConnection: true
      # The network error on the next check should mark the server Unknown and
      # clear the pool.
      - name: waitForEvent
        object: testRunner
        arguments:
          event: ServerMarkedUnknownEvent
          count: 1
      - name: waitForEvent
        object: testRunner
        arguments:
          event: PoolClearedEvent
          count: 1
      # Perform an operation to ensure the node is rediscovered.
      - name: insertMany
        object: collection
        arguments:
          documents:
            - _id: 3
            - _id: 4
      # We cannot assert the server was marked Unknown and pool was cleared an
      # exact number of times because the RTT hello may or may not have
      # triggered this failpoint as well.
      # - name: assertEventCount
      #   object: testRunner
      #   arguments:
      #     event: ServerMarkedUnknownEvent
      #     count: 1
      # - name: assertEventCount
      #   object: testRunner
      #   arguments:
      #     event: PoolClearedEvent
      #     count: 1

    expectations:
      - command_started_event:
          command:
            insert: *collection_name
            documents:
              - _id: 1
              - _id: 2
          command_name: insert
          database_name: *database_name
      - command_started_event:
          command:
            insert: *collection_name
            documents:
              - _id: 3
              - _id: 4
          command_name: insert
          database_name: *database_name

    outcome:
      collection:
        data:
          - {_id: 1}
          - {_id: 2}
          - {_id: 3}
          - {_id: 4}