当前位置: 首页>>代码示例>>Java>>正文


Java BinaryOutputArchive.writeRecord方法代码示例

本文整理汇总了Java中org.apache.jute.BinaryOutputArchive.writeRecord方法的典型用法代码示例。如果您正苦于以下问题:Java BinaryOutputArchive.writeRecord方法的具体用法?Java BinaryOutputArchive.writeRecord怎么用?Java BinaryOutputArchive.writeRecord使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.jute.BinaryOutputArchive的用法示例。


在下文中一共展示了BinaryOutputArchive.writeRecord方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: send

import org.apache.jute.BinaryOutputArchive; //导入方法依赖的package包/类
private void send(DataOutputStream dout, byte[] response)
        throws IOException {
    QuorumAuthPacket authPacket;
    BufferedOutputStream bufferedOutput = new BufferedOutputStream(dout);
    BinaryOutputArchive boa = BinaryOutputArchive
            .getArchive(bufferedOutput);
    if (response != null && response.length < 0) {
        throw new IOException("Response length < 0");
    } else if (response == null) {
        authPacket = QuorumAuth.createPacket(
                QuorumAuth.Status.IN_PROGRESS, response);
    } else {
        authPacket = QuorumAuth.createPacket(
                QuorumAuth.Status.IN_PROGRESS, response);
    }

    boa.writeRecord(authPacket, QuorumAuth.QUORUM_AUTH_MESSAGE_TAG);
    bufferedOutput.flush();
}
 
开发者ID:l294265421,项目名称:ZooKeeper,代码行数:20,代码来源:SaslQuorumAuthLearner.java

示例2: send

import org.apache.jute.BinaryOutputArchive; //导入方法依赖的package包/类
private void send(DataOutputStream dout, byte[] challenge,
        QuorumAuth.Status s) throws IOException {
    BufferedOutputStream bufferedOutput = new BufferedOutputStream(dout);
    BinaryOutputArchive boa = BinaryOutputArchive
            .getArchive(bufferedOutput);
    QuorumAuthPacket authPacket;
    if (challenge != null && challenge.length < 0) {
        throw new IOException("Response length < 0");
    } else if (challenge == null && s != QuorumAuth.Status.SUCCESS) {
        authPacket = QuorumAuth.createPacket(
                QuorumAuth.Status.IN_PROGRESS, challenge);
    } else {
        authPacket = QuorumAuth.createPacket(s, challenge);
    }

    boa.writeRecord(authPacket, QuorumAuth.QUORUM_AUTH_MESSAGE_TAG);
    bufferedOutput.flush();
}
 
开发者ID:l294265421,项目名称:ZooKeeper,代码行数:19,代码来源:SaslQuorumAuthServer.java

示例3: testSaslQuorumAuthServerWithInvalidQuorumAuthPacket

import org.apache.jute.BinaryOutputArchive; //导入方法依赖的package包/类
/**
 * SaslQuorumAuthServer throws exception on receiving an invalid quorum
 * auth packet.
 */
@Test(timeout = 30000)
public void testSaslQuorumAuthServerWithInvalidQuorumAuthPacket()
        throws Exception {
    Socket socket = getSocketPair();
    DataOutputStream dout = new DataOutputStream(socket.getOutputStream());
    BufferedOutputStream bufferedOutput = new BufferedOutputStream(dout);
    BinaryOutputArchive boa = BinaryOutputArchive
            .getArchive(bufferedOutput);
    QuorumAuthPacket authPacket = QuorumAuth
            .createPacket(QuorumAuth.Status.IN_PROGRESS, null);
    authPacket.setMagic(Long.MAX_VALUE); // invalid magic number
    boa.writeRecord(authPacket, null);
    bufferedOutput.flush();
    QuorumAuthServer authServer = new SaslQuorumAuthServer(true,
            "QuorumServer", authzHosts);
    BufferedInputStream is = new BufferedInputStream(
            socket.getInputStream());
    try {
        authServer.authenticate(socket, new DataInputStream(is));
        Assert.fail("Must throw exception as QuorumAuthPacket is invalid");
    } catch (SaslException e) {
        // expected
    }
}
 
开发者ID:l294265421,项目名称:ZooKeeper,代码行数:29,代码来源:QuorumCnxManagerTest.java

示例4: testNullQuorumAuthServerWithValidQuorumAuthPacket

import org.apache.jute.BinaryOutputArchive; //导入方法依赖的package包/类
/**
 * NullQuorumAuthServer should return true on receiving a valid quorum auth
 * packet.
 */
@Test(timeout = 30000)
public void testNullQuorumAuthServerWithValidQuorumAuthPacket()
        throws Exception {
    Socket socket = getSocketPair();
    DataOutputStream dout = new DataOutputStream(socket.getOutputStream());
    BufferedOutputStream bufferedOutput = new BufferedOutputStream(dout);
    BinaryOutputArchive boa = BinaryOutputArchive
            .getArchive(bufferedOutput);
    QuorumAuthPacket authPacket = QuorumAuth
            .createPacket(QuorumAuth.Status.IN_PROGRESS, null);
    boa.writeRecord(authPacket, null);
    bufferedOutput.flush();
    QuorumAuthServer authServer = new NullQuorumAuthServer();
    BufferedInputStream is = new BufferedInputStream(
            socket.getInputStream());
    // It will throw exception and fail the
    // test if any unexpected error. Not adding any extra assertion.
    authServer.authenticate(socket, new DataInputStream(is));
}
 
开发者ID:l294265421,项目名称:ZooKeeper,代码行数:24,代码来源:QuorumCnxManagerTest.java

示例5: sendResponse

import org.apache.jute.BinaryOutputArchive; //导入方法依赖的package包/类
@Override
public void sendResponse(ReplyHeader h, Record r, String tag)
        throws IOException {
    if (!channel.isOpen()) {
        return;
    }
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    // Make space for length
    BinaryOutputArchive bos = BinaryOutputArchive.getArchive(baos);
    try {
        baos.write(fourBytes);
        bos.writeRecord(h, "header");
        if (r != null) {
            bos.writeRecord(r, tag);
        }
        baos.close();
    } catch (IOException e) {
        LOG.error("Error serializing response");
    }
    byte b[] = baos.toByteArray();
    ByteBuffer bb = ByteBuffer.wrap(b);
    bb.putInt(b.length - 4).rewind();
    sendBuffer(bb);
    if (h.getXid() > 0) {
        // zks cannot be null otherwise we would not have gotten here!
        if (!zkServer.shouldThrottle(outstandingCount.decrementAndGet())) {
            enableRecv();
        }
    }
}
 
开发者ID:maoling,项目名称:fuck_zookeeper,代码行数:31,代码来源:NettyServerCnxn.java

示例6: sendResponse

import org.apache.jute.BinaryOutputArchive; //导入方法依赖的package包/类
@Override
public void sendResponse(ReplyHeader h, Record r, String tag)
        throws IOException {
    if (closingChannel || !channel.isOpen()) {
        return;
    }
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    // Make space for length
    BinaryOutputArchive bos = BinaryOutputArchive.getArchive(baos);
    try {
        baos.write(fourBytes);
        bos.writeRecord(h, "header");
        if (r != null) {
            bos.writeRecord(r, tag);
        }
        baos.close();
    } catch (IOException e) {
        LOG.error("Error serializing response");
    }
    byte b[] = baos.toByteArray();
    ByteBuffer bb = ByteBuffer.wrap(b);
    bb.putInt(b.length - 4).rewind();
    sendBuffer(bb);
    if (h.getXid() > 0) {
        // zks cannot be null otherwise we would not have gotten here!
        if (!zkServer.shouldThrottle(outstandingCount.decrementAndGet())) {
            enableRecv();
        }
    }
}
 
开发者ID:didichuxing2,项目名称:https-github.com-apache-zookeeper,代码行数:31,代码来源:NettyServerCnxn.java

示例7: registerWithLeader

import org.apache.jute.BinaryOutputArchive; //导入方法依赖的package包/类
/**
   * Once connected to the leader, perform the handshake protocol to
   * establish a following / observing connection. 
   * @param pktType
   * @return the zxid the Leader sends for synchronization purposes.
   * @throws IOException
   */
  protected long registerWithLeader(int pktType) throws IOException{
      /*
       * Send follower info, including last zxid and sid
       */
  	long lastLoggedZxid = self.getLastLoggedZxid();
      QuorumPacket qp = new QuorumPacket();                
      qp.setType(pktType);
      qp.setZxid(ZxidUtils.makeZxid(self.getAcceptedEpoch(), 0));
      
      /*
       * Add sid to payload
       */
      LearnerInfo li = new LearnerInfo(self.getId(), 0x10000);
      ByteArrayOutputStream bsid = new ByteArrayOutputStream();
      BinaryOutputArchive boa = BinaryOutputArchive.getArchive(bsid);
      boa.writeRecord(li, "LearnerInfo");
      qp.setData(bsid.toByteArray());
      
      writePacket(qp, true);
      readPacket(qp);        
      final long newEpoch = ZxidUtils.getEpochFromZxid(qp.getZxid());
if (qp.getType() == Leader.LEADERINFO) {
      	// we are connected to a 1.0 server so accept the new epoch and read the next packet
      	leaderProtocolVersion = ByteBuffer.wrap(qp.getData()).getInt();
      	byte epochBytes[] = new byte[4];
      	final ByteBuffer wrappedEpochBytes = ByteBuffer.wrap(epochBytes);
      	if (newEpoch > self.getAcceptedEpoch()) {
      		wrappedEpochBytes.putInt((int)self.getCurrentEpoch());
      		self.setAcceptedEpoch(newEpoch);
      	} else if (newEpoch == self.getAcceptedEpoch()) {
      		// since we have already acked an epoch equal to the leaders, we cannot ack
      		// again, but we still need to send our lastZxid to the leader so that we can
      		// sync with it if it does assume leadership of the epoch.
      		// the -1 indicates that this reply should not count as an ack for the new epoch
              wrappedEpochBytes.putInt(-1);
      	} else {
      		throw new IOException("Leaders epoch, " + newEpoch + " is less than accepted epoch, " + self.getAcceptedEpoch());
      	}
      	QuorumPacket ackNewEpoch = new QuorumPacket(Leader.ACKEPOCH, lastLoggedZxid, epochBytes, null);
      	writePacket(ackNewEpoch, true);
          return ZxidUtils.makeZxid(newEpoch, 0);
      } else {
      	if (newEpoch > self.getAcceptedEpoch()) {
      		self.setAcceptedEpoch(newEpoch);
      	}
          if (qp.getType() != Leader.NEWLEADER) {
              LOG.error("First packet should have been NEWLEADER");
              throw new IOException("First packet should have been NEWLEADER");
          }
          return qp.getZxid();
      }
  }
 
开发者ID:maoling,项目名称:fuck_zookeeper,代码行数:60,代码来源:Learner.java

示例8: syncTest

import org.apache.jute.BinaryOutputArchive; //导入方法依赖的package包/类
@Test
public void syncTest() throws Exception {
	File tmpFile = File.createTempFile("test", ".dir", testData);
	tmpFile.delete();
	try {
		FileTxnSnapLog ftsl = new FileTxnSnapLog(tmpFile, tmpFile);
		SimpleLearner sl = new SimpleLearner(ftsl);
		long startZxid = sl.zk.getLastProcessedZxid();
		
		// Set up bogus streams
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		BinaryOutputArchive oa = BinaryOutputArchive.getArchive(baos);
		sl.leaderOs = BinaryOutputArchive.getArchive(new ByteArrayOutputStream());
		
		// make streams and socket do something innocuous
		sl.bufferedOutput = new BufferedOutputStream(System.out);
		sl.sock = new Socket();
		
		// fake messages from the server
		QuorumPacket qp = new QuorumPacket(Leader.SNAP, 0, null, null);
		oa.writeRecord(qp, null);
		sl.zk.getZKDatabase().serializeSnapshot(oa);
		oa.writeString("BenWasHere", "signature");
		TxnHeader hdr = new TxnHeader(0, 0, 0, 0, ZooDefs.OpCode.create);
		CreateTxn txn = new CreateTxn("/foo", new byte[0], new ArrayList<ACL>(), false, sl.zk.getZKDatabase().getNode("/").stat.getCversion());
        ByteArrayOutputStream tbaos = new ByteArrayOutputStream();
        BinaryOutputArchive boa = BinaryOutputArchive.getArchive(tbaos);
        hdr.serialize(boa, "hdr");
        txn.serialize(boa, "txn");
        tbaos.close();
		qp = new QuorumPacket(Leader.PROPOSAL, 1, tbaos.toByteArray(), null);
		oa.writeRecord(qp, null);

		// setup the messages to be streamed to follower
		sl.leaderIs = BinaryInputArchive.getArchive(new ByteArrayInputStream(baos.toByteArray()));
		
		try {
			sl.syncWithLeader(3);
		} catch(EOFException e) {}
		
		sl.zk.shutdown();
		sl = new SimpleLearner(ftsl);
		Assert.assertEquals(startZxid, sl.zk.getLastProcessedZxid());
	} finally {
		recursiveDelete(tmpFile);
	}
}
 
开发者ID:maoling,项目名称:fuck_zookeeper,代码行数:48,代码来源:LearnerTest.java

示例9: registerWithLeader

import org.apache.jute.BinaryOutputArchive; //导入方法依赖的package包/类
/**
   * Once connected to the leader, perform the handshake protocol to
   * establish a following / observing connection. 
   * @param pktType
   * @return the zxid the Leader sends for synchronization purposes.
   * @throws IOException
   */
  protected long registerWithLeader(int pktType) throws IOException{
      /*
       * Send follower info, including last zxid and sid
       */
  	long lastLoggedZxid = self.getLastLoggedZxid();
      QuorumPacket qp = new QuorumPacket();                
      qp.setType(pktType);
      qp.setZxid(ZxidUtils.makeZxid(self.getAcceptedEpoch(), 0));
      
      /*
       * Add sid to payload
       */
      LearnerInfo li = new LearnerInfo(self.getId(), 0x10000, self.getQuorumVerifier().getVersion());
      ByteArrayOutputStream bsid = new ByteArrayOutputStream();
      BinaryOutputArchive boa = BinaryOutputArchive.getArchive(bsid);
      boa.writeRecord(li, "LearnerInfo");
      qp.setData(bsid.toByteArray());
      
      writePacket(qp, true);
      readPacket(qp);        
      final long newEpoch = ZxidUtils.getEpochFromZxid(qp.getZxid());
if (qp.getType() == Leader.LEADERINFO) {
      	// we are connected to a 1.0 server so accept the new epoch and read the next packet
      	leaderProtocolVersion = ByteBuffer.wrap(qp.getData()).getInt();
      	byte epochBytes[] = new byte[4];
      	final ByteBuffer wrappedEpochBytes = ByteBuffer.wrap(epochBytes);
      	if (newEpoch > self.getAcceptedEpoch()) {
      		wrappedEpochBytes.putInt((int)self.getCurrentEpoch());
      		self.setAcceptedEpoch(newEpoch);
      	} else if (newEpoch == self.getAcceptedEpoch()) {
      		// since we have already acked an epoch equal to the leaders, we cannot ack
      		// again, but we still need to send our lastZxid to the leader so that we can
      		// sync with it if it does assume leadership of the epoch.
      		// the -1 indicates that this reply should not count as an ack for the new epoch
              wrappedEpochBytes.putInt(-1);
      	} else {
      		throw new IOException("Leaders epoch, " + newEpoch + " is less than accepted epoch, " + self.getAcceptedEpoch());
      	}
      	QuorumPacket ackNewEpoch = new QuorumPacket(Leader.ACKEPOCH, lastLoggedZxid, epochBytes, null);
      	writePacket(ackNewEpoch, true);
          return ZxidUtils.makeZxid(newEpoch, 0);
      } else {
      	if (newEpoch > self.getAcceptedEpoch()) {
      		self.setAcceptedEpoch(newEpoch);
      	}
          if (qp.getType() != Leader.NEWLEADER) {
              LOG.error("First packet should have been NEWLEADER");
              throw new IOException("First packet should have been NEWLEADER");
          }
          return qp.getZxid();
      }
  }
 
开发者ID:didichuxing2,项目名称:https-github.com-apache-zookeeper,代码行数:60,代码来源:Learner.java

示例10: syncTest

import org.apache.jute.BinaryOutputArchive; //导入方法依赖的package包/类
@Test
public void syncTest() throws Exception {
    File tmpFile = File.createTempFile("test", ".dir", testData);
    tmpFile.delete();
    try {
        FileTxnSnapLog ftsl = new FileTxnSnapLog(tmpFile, tmpFile);
        SimpleLearner sl = new SimpleLearner(ftsl);
        long startZxid = sl.zk.getLastProcessedZxid();

        // Set up bogus streams
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        BinaryOutputArchive oa = BinaryOutputArchive.getArchive(baos);
        sl.leaderOs = BinaryOutputArchive.getArchive(new ByteArrayOutputStream());

        // make streams and socket do something innocuous
        sl.bufferedOutput = new BufferedOutputStream(System.out);
        sl.sock = new Socket();

        // fake messages from the server
        QuorumPacket qp = new QuorumPacket(Leader.SNAP, 0, null, null);
        oa.writeRecord(qp, null);
        sl.zk.getZKDatabase().serializeSnapshot(oa);
        oa.writeString("BenWasHere", "signature");
        TxnHeader hdr = new TxnHeader(0, 0, 0, 0, ZooDefs.OpCode.create);
        CreateTxn txn = new CreateTxn("/foo", new byte[0], new ArrayList<ACL>(), false, sl.zk.getZKDatabase().getNode("/").stat.getCversion());
        ByteArrayOutputStream tbaos = new ByteArrayOutputStream();
        BinaryOutputArchive boa = BinaryOutputArchive.getArchive(tbaos);
        hdr.serialize(boa, "hdr");
        txn.serialize(boa, "txn");
        tbaos.close();
        qp = new QuorumPacket(Leader.PROPOSAL, 1, tbaos.toByteArray(), null);
        oa.writeRecord(qp, null);

        // setup the messages to be streamed to follower
        sl.leaderIs = BinaryInputArchive.getArchive(new ByteArrayInputStream(baos.toByteArray()));

        try {
            sl.syncWithLeader(3);
        } catch (EOFException e) {}

        sl.zk.shutdown();
        sl = new SimpleLearner(ftsl);
        Assert.assertEquals(startZxid, sl.zk.getLastProcessedZxid());
    } finally {
        TestUtils.deleteFileRecursively(tmpFile);
    }
}
 
开发者ID:didichuxing2,项目名称:https-github.com-apache-zookeeper,代码行数:48,代码来源:LearnerTest.java

示例11: syncTest

import org.apache.jute.BinaryOutputArchive; //导入方法依赖的package包/类
@Test
public void syncTest() throws Exception {
	File tmpFile = File.createTempFile("test", ".dir");
	tmpFile.delete();
	try {
		FileTxnSnapLog ftsl = new FileTxnSnapLog(tmpFile, tmpFile);
		SimpleLearner sl = new SimpleLearner(ftsl);
		long startZxid = sl.zk.getLastProcessedZxid();
		
		// Set up bogus streams
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		BinaryOutputArchive oa = BinaryOutputArchive.getArchive(baos);
		sl.leaderOs = BinaryOutputArchive.getArchive(new ByteArrayOutputStream());
		
		// make streams and socket do something innocuous
		sl.bufferedOutput = new BufferedOutputStream(System.out);
		sl.sock = new Socket();
		
		// fake messages from the server
		QuorumPacket qp = new QuorumPacket(Leader.SNAP, 0, null, null);
		oa.writeRecord(qp, null);
		sl.zk.getZKDatabase().serializeSnapshot(oa);
		oa.writeString("BenWasHere", "signature");
		TxnHeader hdr = new TxnHeader(0, 0, 0, 0, ZooDefs.OpCode.create);
		CreateTxn txn = new CreateTxn("/foo", new byte[0], new ArrayList<ACL>(), false, sl.zk.getZKDatabase().getNode("/").stat.getCversion());
        ByteArrayOutputStream tbaos = new ByteArrayOutputStream();
        BinaryOutputArchive boa = BinaryOutputArchive.getArchive(tbaos);
        hdr.serialize(boa, "hdr");
        txn.serialize(boa, "txn");
        tbaos.close();
		qp = new QuorumPacket(Leader.PROPOSAL, 1, tbaos.toByteArray(), null);
		oa.writeRecord(qp, null);

		// setup the messages to be streamed to follower
		sl.leaderIs = BinaryInputArchive.getArchive(new ByteArrayInputStream(baos.toByteArray()));
		
		try {
			sl.syncWithLeader(3);
		} catch(EOFException e) {}
		
		sl.zk.shutdown();
		sl = new SimpleLearner(ftsl);
		Assert.assertEquals(startZxid, sl.zk.getLastProcessedZxid());
	} finally {
		recursiveDelete(tmpFile);
	}
}
 
开发者ID:gerritjvv,项目名称:bigstreams,代码行数:48,代码来源:LearnerTest.java

示例12: registerWithLeader

import org.apache.jute.BinaryOutputArchive; //导入方法依赖的package包/类
/**
   * Once connected to the leader, perform the handshake protocol to
   * establish a following / observing connection. 
   * @param pktType
   * @return the zxid the Leader sends for synchronization purposes.
   * @throws IOException
   */
  protected long registerWithLeader(int pktType) throws IOException{
      /*
       * Send follower info, including last zxid and sid
       */
  	long lastLoggedZxid = self.getLastLoggedZxid();
      QuorumPacket qp = new QuorumPacket();                
      qp.setType(pktType);
      qp.setZxid(ZxidUtils.makeZxid(self.getAcceptedEpoch(), 0));
      
      /*
       * Add sid to payload
       */
      LearnerInfo li = new LearnerInfo(self.getId(), 0x10000);
      ByteArrayOutputStream bsid = new ByteArrayOutputStream();
      BinaryOutputArchive boa = BinaryOutputArchive.getArchive(bsid);
      boa.writeRecord(li, "LearnerInfo");
      qp.setData(bsid.toByteArray());
      
      writePacket(qp, true);
      readPacket(qp);        
      final long newEpoch = ZxidUtils.getEpochFromZxid(qp.getZxid());
if (qp.getType() == Leader.LEADERINFO) {
      	// we are connected to a 1.0 server so accept the new epoch and read the next packet
      	leaderProtocolVersion = ByteBuffer.wrap(qp.getData()).getInt();
      	byte epochBytes[] = new byte[4];
      	final ByteBuffer wrappedEpochBytes = ByteBuffer.wrap(epochBytes);
      	if (newEpoch > self.getAcceptedEpoch()) {
      		wrappedEpochBytes.putInt((int)self.getCurrentEpoch());
      		self.setAcceptedEpoch(newEpoch);
      	} else if (newEpoch == self.getAcceptedEpoch()) {
      		// since we have already acked an epoch equal to the leaders, we cannot ack
      		// again, but we still need to send our lastZxid to the leader so that we can
      		// sync with it if it does assume leadership of the epoch.
      		// the -1 indicates that this reply should not count as an ack for the new epoch
              wrappedEpochBytes.putInt(-1);
      	} else {
      		throw new IOException("Leaders epoch, " + newEpoch + " is less than accepted epoch, " + self.getAcceptedEpoch());
      	}
      	QuorumPacket ackNewEpoch = new QuorumPacket(Leader.ACKEPOCH, lastLoggedZxid, epochBytes, null);
      	writePacket(ackNewEpoch, true);
      	readPacket(qp);
      } else {
      	if (newEpoch > self.getAcceptedEpoch()) {
      		self.setAcceptedEpoch(newEpoch);
      	}
      }
      if (qp.getType() != Leader.NEWLEADER) {
          LOG.error("First packet should have been NEWLEADER");
          throw new IOException("First packet should have been NEWLEADER");
      }
      
      return qp.getZxid();
  }
 
开发者ID:gerritjvv,项目名称:bigstreams,代码行数:61,代码来源:Learner.java

示例13: syncTest

import org.apache.jute.BinaryOutputArchive; //导入方法依赖的package包/类
@Test
public void syncTest() throws Exception {
    File tmpFile = File.createTempFile("test", ".dir", testData);
    tmpFile.delete();
    try {
        FileTxnSnapLog ftsl = new FileTxnSnapLog(tmpFile, tmpFile);
        SimpleLearner sl = new SimpleLearner(ftsl);
        long startZxid = sl.zk.getLastProcessedZxid();

        // Set up bogus streams
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        BinaryOutputArchive oa = BinaryOutputArchive.getArchive(baos);
        sl.leaderOs = BinaryOutputArchive.getArchive(new ByteArrayOutputStream());

        // make streams and socket do something innocuous
        sl.bufferedOutput = new BufferedOutputStream(System.out);
        sl.sock = new Socket();

        // fake messages from the server
        QuorumPacket qp = new QuorumPacket(Leader.SNAP, 0, null, null);
        oa.writeRecord(qp, null);
        sl.zk.getZKDatabase().serializeSnapshot(oa);
        oa.writeString("BenWasHere", "signature");
        TxnHeader hdr = new TxnHeader(0, 0, 0, 0, ZooDefs.OpCode.create);
        CreateTxn txn = new CreateTxn("/foo", new byte[0], new ArrayList<ACL>(), false, sl.zk.getZKDatabase().getNode("/").stat.getCversion());
        ByteArrayOutputStream tbaos = new ByteArrayOutputStream();
        BinaryOutputArchive boa = BinaryOutputArchive.getArchive(tbaos);
        hdr.serialize(boa, "hdr");
        txn.serialize(boa, "txn");
        tbaos.close();
        qp = new QuorumPacket(Leader.PROPOSAL, 1, tbaos.toByteArray(), null);
        oa.writeRecord(qp, null);

        // setup the messages to be streamed to follower
        sl.leaderIs = BinaryInputArchive.getArchive(new ByteArrayInputStream(baos.toByteArray()));

        try {
            sl.syncWithLeader(3);
        } catch (EOFException e) {}

        sl.zk.shutdown();
        sl = new SimpleLearner(ftsl);
        Assert.assertEquals(startZxid, sl.zk.getLastProcessedZxid());
    } finally {
        recursiveDelete(tmpFile);
    }
}
 
开发者ID:sereca,项目名称:SecureKeeper,代码行数:48,代码来源:LearnerTest.java


注:本文中的org.apache.jute.BinaryOutputArchive.writeRecord方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。