summaryrefslogtreecommitdiff
path: root/bdb/test/scr016/TestReplication.java
diff options
context:
space:
mode:
Diffstat (limited to 'bdb/test/scr016/TestReplication.java')
-rw-r--r--bdb/test/scr016/TestReplication.java289
1 files changed, 0 insertions, 289 deletions
diff --git a/bdb/test/scr016/TestReplication.java b/bdb/test/scr016/TestReplication.java
deleted file mode 100644
index 87cb683d60f..00000000000
--- a/bdb/test/scr016/TestReplication.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestReplication.java,v 1.3 2002/01/23 14:29:51 bostic Exp $
- */
-
-/*
- * Simple test of replication, merely to exercise the individual
- * methods in the API. Rather than use TCP/IP, our transport
- * mechanism is just an ArrayList of byte arrays.
- * It's managed like a queue, and synchronization is via
- * the ArrayList object itself and java's wait/notify.
- * It's not terribly extensible, but it's fine for a small test.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Vector;
-
-public class TestReplication extends Thread
- implements DbRepTransport
-{
- public static final String MASTER_ENVDIR = "./master";
- public static final String CLIENT_ENVDIR = "./client";
-
- private Vector queue = new Vector();
- private DbEnv master_env;
- private DbEnv client_env;
-
- private static void mkdir(String name)
- throws IOException
- {
- (new File(name)).mkdir();
- }
-
-
- // The client thread runs this
- public void run()
- {
- try {
- System.err.println("c10");
- client_env = new DbEnv(0);
- System.err.println("c11");
- client_env.set_rep_transport(1, this);
- System.err.println("c12");
- client_env.open(CLIENT_ENVDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0);
- System.err.println("c13");
- Dbt myid = new Dbt("master01".getBytes());
- System.err.println("c14");
- client_env.rep_start(myid, Db.DB_REP_CLIENT);
- System.err.println("c15");
- DbEnv.RepProcessMessage processMsg = new DbEnv.RepProcessMessage();
- processMsg.envid = 2;
- System.err.println("c20");
- boolean running = true;
-
- Dbt control = new Dbt();
- Dbt rec = new Dbt();
-
- while (running) {
- int msgtype = 0;
-
- System.err.println("c30");
- synchronized (queue) {
- if (queue.size() == 0) {
- System.err.println("c40");
- sleepShort();
- }
- else {
- msgtype = ((Integer)queue.firstElement()).intValue();
- queue.removeElementAt(0);
- byte[] data;
-
- System.err.println("c50 " + msgtype);
-
- switch (msgtype) {
- case -1:
- running = false;
- break;
- case 1:
- data = (byte[])queue.firstElement();
- queue.removeElementAt(0);
- control.set_data(data);
- control.set_size(data.length);
- break;
- case 2:
- control.set_data(null);
- control.set_size(0);
- break;
- case 3:
- data = (byte[])queue.firstElement();
- queue.removeElementAt(0);
- rec.set_data(data);
- rec.set_size(data.length);
- break;
- case 4:
- rec.set_data(null);
- rec.set_size(0);
- break;
- }
-
- }
- }
- System.err.println("c60");
- if (msgtype == 3 || msgtype == 4) {
- System.out.println("cLIENT: Got message");
- client_env.rep_process_message(control, rec,
- processMsg);
- }
- }
- System.err.println("c70");
- Db db = new Db(client_env, 0);
- db.open(null, "x.db", null, Db.DB_BTREE, 0, 0);
- Dbt data = new Dbt();
- System.err.println("c80");
- db.get(null, new Dbt("Hello".getBytes()), data, 0);
- System.err.println("c90");
- System.out.println("Hello " + new String(data.get_data(), data.get_offset(), data.get_size()));
- System.err.println("c95");
- client_env.close(0);
- }
- catch (Exception e) {
- System.err.println("client exception: " + e);
- }
- }
-
- // Implements DbTransport
- public int send(DbEnv env, Dbt control, Dbt rec, int flags, int envid)
- throws DbException
- {
- System.out.println("Send to " + envid);
- if (envid == 1) {
- System.err.println("Unexpected envid = " + envid);
- return 0;
- }
-
- int nbytes = 0;
-
- synchronized (queue) {
- System.out.println("Sending message");
- byte[] data = control.get_data();
- if (data != null && data.length > 0) {
- queue.addElement(new Integer(1));
- nbytes += data.length;
- byte[] newdata = new byte[data.length];
- System.arraycopy(data, 0, newdata, 0, data.length);
- queue.addElement(newdata);
- }
- else
- {
- queue.addElement(new Integer(2));
- }
-
- data = rec.get_data();
- if (data != null && data.length > 0) {
- queue.addElement(new Integer(3));
- nbytes += data.length;
- byte[] newdata = new byte[data.length];
- System.arraycopy(data, 0, newdata, 0, data.length);
- queue.addElement(newdata);
- }
- else
- {
- queue.addElement(new Integer(4));
- }
- System.out.println("MASTER: sent message");
- }
- return 0;
- }
-
- public void sleepShort()
- {
- try {
- sleep(100);
- }
- catch (InterruptedException ie)
- {
- }
- }
-
- public void send_terminator()
- {
- synchronized (queue) {
- queue.addElement(new Integer(-1));
- }
- }
-
- public void master()
- {
- try {
- master_env = new DbEnv(0);
- master_env.set_rep_transport(2, this);
- master_env.open(MASTER_ENVDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0644);
- System.err.println("10");
- Dbt myid = new Dbt("client01".getBytes());
- master_env.rep_start(myid, Db.DB_REP_MASTER);
- System.err.println("10");
- Db db = new Db(master_env, 0);
- System.err.println("20");
- db.open(null, "x.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
- System.err.println("30");
- db.put(null, new Dbt("Hello".getBytes()),
- new Dbt("world".getBytes()), 0);
- System.err.println("40");
- //DbEnv.RepElectResult electionResult = new DbEnv.RepElectResult();
- //master_env.rep_elect(2, 2, 3, 4, electionResult);
- db.close(0);
- System.err.println("50");
- master_env.close(0);
- send_terminator();
- }
- catch (Exception e) {
- System.err.println("client exception: " + e);
- }
- }
-
- public static void main(String[] args)
- {
- // The test should only take a few milliseconds.
- // give it 10 seconds before bailing out.
- TimelimitThread t = new TimelimitThread(1000*10);
- t.start();
-
- try {
- mkdir(CLIENT_ENVDIR);
- mkdir(MASTER_ENVDIR);
-
- TestReplication rep = new TestReplication();
-
- // Run the client as a seperate thread.
- rep.start();
-
- // Run the master.
- rep.master();
-
- // Wait for the master to finish.
- rep.join();
- }
- catch (Exception e)
- {
- System.err.println("Exception: " + e);
- }
- t.finished();
- }
-
-}
-
-class TimelimitThread extends Thread
-{
- long nmillis;
- boolean finished = false;
-
- TimelimitThread(long nmillis)
- {
- this.nmillis = nmillis;
- }
-
- public void finished()
- {
- finished = true;
- }
-
- public void run()
- {
- long targetTime = System.currentTimeMillis() + nmillis;
- long curTime;
-
- while (!finished &&
- ((curTime = System.currentTimeMillis()) < targetTime)) {
- long diff = targetTime - curTime;
- if (diff > 100)
- diff = 100;
- try {
- sleep(diff);
- }
- catch (InterruptedException ie) {
- }
- }
- System.err.println("");
- System.exit(1);
- }
-}