1 /*- 2 * See the file LICENSE for redistribution information. 3 * 4 * Copyright (c) 2002, 2014 Oracle and/or its affiliates. All rights reserved. 5 * 6 * $Id$ 7 */ 8 package com.sleepycat.je.rep.dual.trigger; 9 10 import java.util.Arrays; 11 import java.util.LinkedList; 12 import java.util.List; 13 14 import org.junit.Before; 15 16 import com.sleepycat.je.DatabaseEntry; 17 import com.sleepycat.je.Transaction; 18 import com.sleepycat.je.TransactionConfig; 19 import com.sleepycat.je.rep.util.RepEnvWrapper; 20 import com.sleepycat.je.rep.utilint.RepTestUtils; 21 import com.sleepycat.je.trigger.ReplicatedDatabaseTrigger; 22 import com.sleepycat.je.trigger.TestBase; 23 import com.sleepycat.je.trigger.Trigger; 24 25 /** 26 * Replicated version of the trigger unit test. The test repeats the trigger 27 * tests but now across the replication group ensuring that the triggers are 28 * invoked at every node in the replication group. 29 */ 30 public class InvokeTest extends com.sleepycat.je.trigger.InvokeTest { 31 32 @Before setUp()33 public void setUp() 34 throws Exception { 35 36 super.setUp(); 37 nNodes = ((RepEnvWrapper)getWrapper()).getRepEnvInfo(envRoot).length; 38 ((RepEnvWrapper)getWrapper()).syncGroup(envRoot); 39 } 40 41 @Override testAddRemoveTriggerExistindDbTrans()42 public void testAddRemoveTriggerExistindDbTrans() { 43 // TODO: Need equivalent tests once #18262 is fixed 44 } 45 46 @Override testAddRemoveTriggerExistindDbAuto()47 public void testAddRemoveTriggerExistindDbAuto() { 48 // TODO: Need equivalent tests once #18262 is fixed 49 } 50 51 /* 52 * All verifyXXX methods are overriden to ensure that the entire 53 * replication group is in sync before verifying that the triggers have 54 * been invoked. 55 */ 56 @Override verifyOpen(final int nCreate, int nOpen)57 protected void verifyOpen(final int nCreate, int nOpen) { 58 ((RepEnvWrapper)getWrapper()).syncGroup(envRoot); 59 super.verifyOpen(nCreate, nOpen); 60 } 61 62 @Override verifyClose(@uppressWarningsR) final int nClose)63 protected void verifyClose(@SuppressWarnings("unused") final int nClose) { 64 /* closes are asynchronous on the Replica. */ 65 } 66 67 @Override verifyRename(final String newName, final int nRename)68 protected void verifyRename(final String newName, 69 final int nRename) { 70 ((RepEnvWrapper)getWrapper()).syncGroup(envRoot); 71 super.verifyRename(newName, nRename); 72 } 73 74 @Override verifyTruncate(final int nTruncate)75 protected void verifyTruncate(final int nTruncate) { 76 ((RepEnvWrapper)getWrapper()).syncGroup(envRoot); 77 super.verifyTruncate(nTruncate); 78 } 79 80 @Override verifyRemove(final int nRemove)81 protected void verifyRemove(final int nRemove) { 82 ((RepEnvWrapper)getWrapper()).syncGroup(envRoot); 83 super.verifyRemove(nRemove); 84 } 85 86 @Override verifyCommit(final int nCommit)87 protected void verifyCommit(final int nCommit) { 88 ((RepEnvWrapper)getWrapper()).syncGroup(envRoot); 89 super.verifyCommit(nCommit); 90 } 91 92 @Override verifyAbort(final int nAbort)93 protected void verifyAbort(final int nAbort) { 94 ((RepEnvWrapper)getWrapper()).syncGroup(envRoot); 95 super.verifyAbort(nAbort); 96 } 97 98 @Override verifyDelete(final int nDelete, final DatabaseEntry key, final DatabaseEntry oldData)99 protected void verifyDelete(final int nDelete, 100 final DatabaseEntry key, 101 final DatabaseEntry oldData) { 102 ((RepEnvWrapper)getWrapper()).syncGroup(envRoot); 103 super.verifyDelete(nDelete, key, oldData); 104 105 } 106 107 @Override verifyPut(final int nPut, final DatabaseEntry key, final DatabaseEntry newData, final DatabaseEntry oldData)108 protected void verifyPut(final int nPut, 109 final DatabaseEntry key, 110 final DatabaseEntry newData, 111 final DatabaseEntry oldData) { 112 ((RepEnvWrapper)getWrapper()).syncGroup(envRoot); 113 super.verifyPut(nPut, key, newData, oldData); 114 } 115 116 @Override verifyAddTrigger(final int nAddTrigger)117 protected void verifyAddTrigger(final int nAddTrigger) { 118 ((RepEnvWrapper)getWrapper()).syncGroup(envRoot); 119 super.verifyAddTrigger(nAddTrigger); 120 } 121 122 @Override verifyRemoveTrigger(final int nRemoveTrigger)123 protected void verifyRemoveTrigger(final int nRemoveTrigger) { 124 ((RepEnvWrapper)getWrapper()).syncGroup(envRoot); 125 super.verifyRemoveTrigger(nRemoveTrigger); 126 } 127 128 @Override getTransactionConfig()129 protected TransactionConfig getTransactionConfig() { 130 return RepTestUtils.SYNC_SYNC_ALL_TC; 131 } 132 133 @Override getTriggers()134 protected List<Trigger> getTriggers() { 135 return new LinkedList<Trigger>(Arrays.asList((Trigger) new RDBT("t1"), 136 (Trigger) new RDBT("t2"))); 137 } 138 139 @Override getTransientTriggers()140 protected List<Trigger> getTransientTriggers() { 141 return new LinkedList<Trigger>(Arrays.asList((Trigger) new TRDBT("tt1"), 142 (Trigger) new TRDBT("tt2"))); 143 } 144 145 @Override getTriggersPlusOne()146 protected List<Trigger> getTriggersPlusOne() { 147 List<Trigger> triggers = getTriggers(); 148 triggers.add(new InvokeTest.RDBT("t3")); 149 return triggers; 150 } 151 152 @SuppressWarnings("unused") 153 public static class RDBT extends TestBase.DBT 154 implements ReplicatedDatabaseTrigger { 155 156 private static final long serialVersionUID = 1L; 157 RDBT(String name)158 public RDBT(String name) { 159 super(name); 160 } 161 162 /* Awaits syncup unit tests. */ 163 repeatCreate(Transaction txn)164 public void repeatCreate(Transaction txn) { 165 // TODO Auto-generated method stub 166 } 167 repeatDelete(Transaction txn, DatabaseEntry key)168 public void repeatDelete(Transaction txn, DatabaseEntry key) { 169 // TODO Auto-generated method stub 170 } 171 repeatPut(Transaction txn, DatabaseEntry key, DatabaseEntry newData)172 public void repeatPut(Transaction txn, 173 DatabaseEntry key, 174 DatabaseEntry newData) { 175 // TODO Auto-generated method stub 176 } 177 repeatRemove(Transaction txn)178 public void repeatRemove(Transaction txn) { 179 // TODO Auto-generated method stub 180 } 181 repeatRename(Transaction txn, String newName)182 public void repeatRename(Transaction txn, String newName) { 183 // TODO Auto-generated method stub 184 } 185 repeatTransaction(Transaction txn)186 public void repeatTransaction(Transaction txn) { 187 // TODO Auto-generated method stub 188 } 189 repeatTruncate(Transaction txn)190 public void repeatTruncate(Transaction txn) { 191 // TODO Auto-generated method stub 192 } 193 repeatAddTrigger(Transaction txn)194 public void repeatAddTrigger(Transaction txn) { 195 // TODO Auto-generated method stub 196 197 } 198 repeatRemoveTrigger(Transaction txn)199 public void repeatRemoveTrigger(Transaction txn) { 200 // TODO Auto-generated method stub 201 202 } 203 } 204 205 @SuppressWarnings("unused") 206 public static class TRDBT extends TestBase.TDBT 207 implements ReplicatedDatabaseTrigger { 208 TRDBT(String name)209 public TRDBT(String name) { 210 super(name); 211 } 212 213 /* Awaits syncup unit tests. */ 214 repeatCreate(Transaction txn)215 public void repeatCreate(Transaction txn) { 216 // TODO Auto-generated method stub 217 } 218 repeatDelete(Transaction txn, DatabaseEntry key)219 public void repeatDelete(Transaction txn, DatabaseEntry key) { 220 // TODO Auto-generated method stub 221 } 222 repeatPut(Transaction txn, DatabaseEntry key, DatabaseEntry newData)223 public void repeatPut(Transaction txn, 224 DatabaseEntry key, 225 DatabaseEntry newData) { 226 // TODO Auto-generated method stub 227 } 228 repeatRemove(Transaction txn)229 public void repeatRemove(Transaction txn) { 230 // TODO Auto-generated method stub 231 } 232 repeatRename(Transaction txn, String newName)233 public void repeatRename(Transaction txn, String newName) { 234 // TODO Auto-generated method stub 235 } 236 repeatTransaction(Transaction txn)237 public void repeatTransaction(Transaction txn) { 238 // TODO Auto-generated method stub 239 } 240 repeatTruncate(Transaction txn)241 public void repeatTruncate(Transaction txn) { 242 // TODO Auto-generated method stub 243 } 244 repeatAddTrigger(Transaction txn)245 public void repeatAddTrigger(Transaction txn) { 246 // TODO Auto-generated method stub 247 248 } 249 repeatRemoveTrigger(Transaction txn)250 public void repeatRemoveTrigger(Transaction txn) { 251 // TODO Auto-generated method stub 252 253 } 254 } 255 } 256