github.com/lfch/etcd-io/tests/v3@v3.0.0-20221004140520-eac99acd3e9d/functional/tester/case_network_blackhole.go (about) 1 // Copyright 2018 The etcd Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package tester 16 17 import "github.com/lfch/etcd-io/tests/v3/functional/rpcpb" 18 19 func inject_BLACKHOLE_PEER_PORT_TX_RX(clus *Cluster, idx int) error { 20 return clus.sendOp(idx, rpcpb.Operation_BLACKHOLE_PEER_PORT_TX_RX) 21 } 22 23 func recover_BLACKHOLE_PEER_PORT_TX_RX(clus *Cluster, idx int) error { 24 return clus.sendOp(idx, rpcpb.Operation_UNBLACKHOLE_PEER_PORT_TX_RX) 25 } 26 27 func new_Case_BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER(clus *Cluster) Case { 28 cc := caseByFunc{ 29 rpcpbCase: rpcpb.Case_BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER, 30 injectMember: inject_BLACKHOLE_PEER_PORT_TX_RX, 31 recoverMember: recover_BLACKHOLE_PEER_PORT_TX_RX, 32 } 33 c := &caseFollower{cc, -1, -1} 34 return &caseDelay{ 35 Case: c, 36 delayDuration: clus.GetCaseDelayDuration(), 37 } 38 } 39 40 func new_Case_BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT() Case { 41 cc := caseByFunc{ 42 rpcpbCase: rpcpb.Case_BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT, 43 injectMember: inject_BLACKHOLE_PEER_PORT_TX_RX, 44 recoverMember: recover_BLACKHOLE_PEER_PORT_TX_RX, 45 } 46 c := &caseFollower{cc, -1, -1} 47 return &caseUntilSnapshot{ 48 rpcpbCase: rpcpb.Case_BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT, 49 Case: c, 50 } 51 } 52 53 func new_Case_BLACKHOLE_PEER_PORT_TX_RX_LEADER(clus *Cluster) Case { 54 cc := caseByFunc{ 55 rpcpbCase: rpcpb.Case_BLACKHOLE_PEER_PORT_TX_RX_LEADER, 56 injectMember: inject_BLACKHOLE_PEER_PORT_TX_RX, 57 recoverMember: recover_BLACKHOLE_PEER_PORT_TX_RX, 58 } 59 c := &caseLeader{cc, -1, -1} 60 return &caseDelay{ 61 Case: c, 62 delayDuration: clus.GetCaseDelayDuration(), 63 } 64 } 65 66 func new_Case_BLACKHOLE_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT() Case { 67 cc := caseByFunc{ 68 rpcpbCase: rpcpb.Case_BLACKHOLE_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT, 69 injectMember: inject_BLACKHOLE_PEER_PORT_TX_RX, 70 recoverMember: recover_BLACKHOLE_PEER_PORT_TX_RX, 71 } 72 c := &caseLeader{cc, -1, -1} 73 return &caseUntilSnapshot{ 74 rpcpbCase: rpcpb.Case_BLACKHOLE_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT, 75 Case: c, 76 } 77 } 78 79 func new_Case_BLACKHOLE_PEER_PORT_TX_RX_QUORUM(clus *Cluster) Case { 80 c := &caseQuorum{ 81 caseByFunc: caseByFunc{ 82 rpcpbCase: rpcpb.Case_BLACKHOLE_PEER_PORT_TX_RX_QUORUM, 83 injectMember: inject_BLACKHOLE_PEER_PORT_TX_RX, 84 recoverMember: recover_BLACKHOLE_PEER_PORT_TX_RX, 85 }, 86 injected: make(map[int]struct{}), 87 } 88 return &caseDelay{ 89 Case: c, 90 delayDuration: clus.GetCaseDelayDuration(), 91 } 92 } 93 94 func new_Case_BLACKHOLE_PEER_PORT_TX_RX_ALL(clus *Cluster) Case { 95 c := &caseAll{ 96 rpcpbCase: rpcpb.Case_BLACKHOLE_PEER_PORT_TX_RX_ALL, 97 injectMember: inject_BLACKHOLE_PEER_PORT_TX_RX, 98 recoverMember: recover_BLACKHOLE_PEER_PORT_TX_RX, 99 } 100 return &caseDelay{ 101 Case: c, 102 delayDuration: clus.GetCaseDelayDuration(), 103 } 104 }