github.com/matrixorigin/matrixone@v0.7.0/pkg/util/fault/fault_test.go (about) 1 // Copyright 2022 Matrix Origin 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 fault 16 17 import ( 18 "context" 19 "testing" 20 21 "github.com/stretchr/testify/require" 22 ) 23 24 func TestCount(t *testing.T) { 25 var ok bool 26 var cnt int64 27 var ctx = context.TODO() 28 29 Enable() 30 AddFaultPoint(ctx, "a", ":5::", "return", 0, "") 31 AddFaultPoint(ctx, "aa", ":::", "getcount", 0, "a") 32 _, _, ok = TriggerFault("a") 33 require.Equal(t, true, ok) 34 _, _, ok = TriggerFault("a") 35 require.Equal(t, true, ok) 36 _, _, ok = TriggerFault("a") 37 require.Equal(t, true, ok) 38 cnt, _, ok = TriggerFault("aa") 39 require.Equal(t, true, ok) 40 require.Equal(t, int64(3), cnt) 41 42 _, _, ok = TriggerFault("a") 43 require.Equal(t, true, ok) 44 cnt, _, ok = TriggerFault("aa") 45 require.Equal(t, true, ok) 46 require.Equal(t, int64(4), cnt) 47 48 _, _, ok = TriggerFault("a") 49 require.Equal(t, true, ok) 50 cnt, _, ok = TriggerFault("aa") 51 require.Equal(t, true, ok) 52 require.Equal(t, int64(5), cnt) 53 54 _, _, ok = TriggerFault("a") 55 require.Equal(t, false, ok) 56 cnt, _, ok = TriggerFault("aa") 57 require.Equal(t, true, ok) 58 require.Equal(t, int64(6), cnt) 59 60 RemoveFaultPoint(ctx, "a") 61 RemoveFaultPoint(ctx, "aa") 62 63 AddFaultPoint(ctx, "a", "3:8:2:", "return", 0, "") 64 AddFaultPoint(ctx, "aa", ":::", "getcount", 0, "a") 65 _, _, ok = TriggerFault("a") 66 require.Equal(t, false, ok) 67 cnt, _, ok = TriggerFault("aa") 68 require.Equal(t, true, ok) 69 require.Equal(t, int64(1), cnt) 70 71 _, _, ok = TriggerFault("a") 72 require.Equal(t, false, ok) 73 74 _, _, ok = TriggerFault("a") 75 require.Equal(t, true, ok) 76 cnt, _, _ = TriggerFault("aa") 77 require.Equal(t, int64(3), cnt) 78 79 _, _, ok = TriggerFault("a") 80 require.Equal(t, false, ok) 81 cnt, _, _ = TriggerFault("aa") 82 require.Equal(t, int64(4), cnt) 83 84 // 5 85 _, _, ok = TriggerFault("a") 86 require.Equal(t, true, ok) 87 88 // 6 89 _, _, ok = TriggerFault("a") 90 require.Equal(t, false, ok) 91 92 // 7 93 _, _, ok = TriggerFault("a") 94 require.Equal(t, true, ok) 95 96 //8 97 _, _, ok = TriggerFault("a") 98 require.Equal(t, false, ok) 99 100 //9 101 _, _, ok = TriggerFault("a") 102 require.Equal(t, false, ok) 103 104 cnt, _, ok = TriggerFault("aa") 105 require.Equal(t, true, ok) 106 require.Equal(t, int64(9), cnt) 107 Disable() 108 Disable() 109 } 110 111 func wait(t *testing.T) { 112 _, _, ok := TriggerFault("w") 113 require.Equal(t, true, ok) 114 } 115 116 func TestEcho(t *testing.T) { 117 Enable() 118 119 AddFaultPoint(context.TODO(), "e", ":::", "echo", 21, "guns") 120 121 i, s, ok := TriggerFault("e") 122 require.True(t, ok) 123 require.Equal(t, 21, int(i)) 124 require.Equal(t, "guns", s) 125 126 Disable() 127 } 128 129 func TestWait(t *testing.T) { 130 var ok bool 131 var cnt int64 132 var ctx = context.Background() 133 134 Enable() 135 136 AddFaultPoint(ctx, "w", ":::", "wait", 0, "") 137 AddFaultPoint(ctx, "n1", ":::", "notify", 0, "w") 138 AddFaultPoint(ctx, "nall", ":::", "notifyall", 0, "w") 139 AddFaultPoint(ctx, "gc", ":::", "getcount", 0, "w") 140 AddFaultPoint(ctx, "gw", ":::", "getwaiters", 0, "w") 141 AddFaultPoint(ctx, "s", ":::", "sleep", 1, "w") 142 143 for i := 0; i < 10; i++ { 144 go wait(t) 145 } 146 147 TriggerFault("s") 148 149 cnt, _, ok = TriggerFault("gc") 150 require.Equal(t, true, ok) 151 require.Equal(t, int64(10), cnt) 152 153 cnt, _, ok = TriggerFault("gw") 154 require.Equal(t, true, ok) 155 require.Equal(t, int64(10), cnt) 156 157 TriggerFault("n1") 158 TriggerFault("s") 159 160 cnt, _, ok = TriggerFault("gc") 161 require.Equal(t, true, ok) 162 require.Equal(t, int64(10), cnt) 163 164 cnt, _, ok = TriggerFault("gw") 165 require.Equal(t, true, ok) 166 require.Equal(t, int64(9), cnt) 167 168 TriggerFault("nall") 169 TriggerFault("s") 170 171 cnt, _, ok = TriggerFault("gc") 172 require.Equal(t, true, ok) 173 require.Equal(t, int64(10), cnt) 174 175 cnt, _, ok = TriggerFault("gw") 176 require.Equal(t, true, ok) 177 require.Equal(t, int64(0), cnt) 178 179 Disable() 180 }