/** * Tests the behaviour of the application with multiple origin nodes * (for different sets) * */ coordinator.includeFile('disorder/tests/BasicTest.js'); MultipleOrigins=function(coordinator,testResults) { Failover.call(this,coordinator,testResults); this.slonArray=[]; this.testDescription='Tests a replication cluster with' + ' multiple replication sets on different origins' +' sets are moved and nodes are failed.'; } MultipleOrigins.prototype = new Failover(); MultipleOrigins.prototype.constructor = MultipleOrigins; MultipleOrigins.prototype.runTest = function() { this.coordinator.log("MultipleOrigins.prototype.runTest - begin"); this.testResults.newGroup("Multiple Origins"); this.setupReplication(); this.addTables(); this.coordinator.log("MultipleOrigins.prototype.runTest - configuration configured"); /** * Start the slons. */ this.coordinator.log("MultipleOrigins.prototype.runTest - start slons"); for(var idx=1; idx <= this.getNodeCount(); idx++) { this.slonArray[idx-1] = this.coordinator.createSlonLauncher('db' + idx); this.slonArray[idx-1].run(); } this.coordinator.log("MultipleOrigins.prototype.runTest - subscribe empty set"); /** * Subscribe the empty set (we have not added anything). */ this.subscribeSet(1,1,1,[3]); if(this.testResults.getFailureCount()== 0) { //No apparent errors. this.subscribeSet(1,1,3,[4,5]); } this.coordinator.log("MultipleOrigins.prototype.runTest - subscribe empty set 2"); this.addCompletePaths(); this.createSecondSet(2); this.subscribeSet(2,2,'2','4'); this.coordinator.log("MultipleOrigins.prototype.runTest - generate load"); /** * * 1 2 * \\ || * 3===4 * || * 5 * * where set 1 is origin on 1, set 2 is origin on 2. */ var load = this.generateLoad(1); java.lang.Thread.sleep(10*1000); load.stop(); this.coordinator.join(load); this.slonikSync(1,1); this.compareDb('db1','db3'); this.compareDb('db1','db4'); this.coordinator.log("MultipleOrigins.prototype.runTest - move set 1-->3"); /** * MOVE SET 1===>3 */ this.moveSet(1,1,4); this.currentOrigin='db4'; load = this.generateLoad(4); java.lang.Thread.sleep(10*1000); load.stop(); this.coordinator.join(load); this.coordinator.log("MultipleOrigins.prototype.runTest - sync, compare"); this.slonikSync(1,4); this.compareDb('db1','db3'); this.moveSet(1,4,1); this.slonikSync(1,1); this.slonikSync(1,4); this.failNode(1,4,true); for(var idx=1; idx <= this.getNodeCount(); idx++) { this.slonArray[idx-1].stop(); this.coordinator.join(this.slonArray[idx-1]); } this.coordinator.log("MultipleOrigins.prototype.runTest - complete"); }