本文整理了Java中com.zsmartsystems.zigbee.transaction.ZigBeeTransactionFuture
类的一些代码示例,展示了ZigBeeTransactionFuture
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ZigBeeTransactionFuture
类的具体详情如下:
包路径:com.zsmartsystems.zigbee.transaction.ZigBeeTransactionFuture
类名称:ZigBeeTransactionFuture
[英]Future implementation for asynchronous transactions.
[中]异步事务的未来实现。
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Test
public void testIsDone() throws InterruptedException, ExecutionException, TimeoutException {
ZigBeeTransactionFuture future = new ZigBeeTransactionFuture();
assertFalse(future.isDone());
CommandResult result = new CommandResult();
future.set(result);
assertTrue(future.isDone());
assertEquals(result, future.get());
assertEquals(result, future.get(0, TimeUnit.MICROSECONDS));
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
private void cancelTransaction() {
if (timeoutTask != null) {
timeoutTask.cancel(false);
}
logger.debug("Transaction cancelled: {}", command);
if (transactionFuture != null) {
synchronized (transactionFuture) {
transactionFuture.cancel(false);
transactionFuture.notify();
}
}
if (responseMatcher != null) {
transactionManager.removeTransactionListener(this);
}
state = TransactionState.FAILED;
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Override
public CommandResult get() throws InterruptedException, ExecutionException {
try {
return get(TIMEOUT_MILLISECONDS, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
set(new CommandResult());
return result;
}
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
/**
* Broadcasts command i.e. does not wait for response.
*
* @param command the {@link ZigBeeCommand}
* @return the {@link CommandResult} future.
*/
private Future<CommandResult> broadcast(final ZigBeeCommand command) {
synchronized (command) {
final ZigBeeTransactionFuture transactionFuture = new ZigBeeTransactionFuture();
sendCommand(command);
transactionFuture.set(new CommandResult(new BroadcastResponse()));
return transactionFuture;
}
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Test
public void testTimeout() {
ZigBeeTransactionManager transactionManager = Mockito.mock(ZigBeeTransactionManager.class);
ScheduledFuture timerFuture = Mockito.mock(ScheduledFuture.class);
ZigBeeCommand command = Mockito.mock(ZigBeeCommand.class);
ZigBeeTransactionMatcher matcher = Mockito.mock(ZigBeeTransactionMatcher.class);
ZigBeeTransactionFuture transactionFuture = new ZigBeeTransactionFuture();
ZigBeeTransaction transaction = new ZigBeeTransaction(transactionManager, command, matcher);
transaction.setFuture(transactionFuture);
ArgumentCaptor<Runnable> timerCaptor = ArgumentCaptor.forClass(Runnable.class);
Mockito.when(transactionManager.scheduleTask(timerCaptor.capture(), ArgumentMatchers.anyLong()))
.thenReturn(timerFuture);
transaction.send();
Mockito.verify(transactionManager, Mockito.times(1)).addTransactionListener(transaction);
Mockito.verify(transactionManager, Mockito.times(1)).send(command);
Runnable timeout = timerCaptor.getValue();
assertNotNull(timeout);
assertFalse(transactionFuture.isDone());
assertFalse(transactionFuture.isCancelled());
timeout.run();
Mockito.verify(transactionManager, Mockito.times(1)).removeTransactionListener(transaction);
assertTrue(transactionFuture.isDone());
assertTrue(transactionFuture.isCancelled());
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Test
public void testTimeout() throws InterruptedException, ExecutionException, TimeoutException {
ZigBeeTransactionFuture future = new ZigBeeTransactionFuture();
assertFalse(future.isDone());
assertNotNull(future.get(0, TimeUnit.MICROSECONDS));
assertTrue(future.isDone());
CommandResult result = future.get();
assertNull(result.getResponse());
assertFalse(future.cancel(true));
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Test
public void testCancel() {
ZigBeeTransactionFuture future = new ZigBeeTransactionFuture();
assertFalse(future.isCancelled());
assertTrue(future.cancel(true));
assertFalse(future.cancel(true));
assertTrue(future.isCancelled());
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Test
public void testDefaultTimeout() throws Exception {
ZigBeeTransactionFuture future = new ZigBeeTransactionFuture();
assertFalse(future.isDone());
setField(ZigBeeTransactionFuture.class, future, "TIMEOUT_MILLISECONDS", (long) 0);
CommandResult result = future.get();
assertNull(result.getResponse());
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
private void completeTransaction(ZigBeeCommand receivedCommand) {
if (timeoutTask != null) {
timeoutTask.cancel(false);
}
logger.debug("Transaction complete: {}", command);
if (transactionFuture != null) {
synchronized (transactionFuture) {
transactionFuture.set(new CommandResult(receivedCommand));
transactionFuture.notify();
}
}
if (responseMatcher != null) {
transactionManager.removeTransactionListener(this);
}
state = TransactionState.COMPLETE;
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
/**
* Sends a command, and uses the {@link ZigBeeTransactionMatcher} to match the response which will complete the
* transaction.
*
* @param command the {@link ZigBeeCommand} to send
* @param responseMatcher the {@link ZigBeeTransactionMatcher} to match the response which will complete the
* transaction.
* @return the future {@link CommandResult}
*/
public Future<CommandResult> sendTransaction(ZigBeeCommand command, ZigBeeTransactionMatcher responseMatcher) {
ZigBeeTransactionFuture transactionFuture = new ZigBeeTransactionFuture();
ZigBeeTransaction transaction = new ZigBeeTransaction(this, command, responseMatcher);
transaction.setFuture(transactionFuture);
transaction.send();
return transactionFuture;
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Test
public void commandReceived() {
ZigBeeTransactionManager transactionManager = Mockito.mock(ZigBeeTransactionManager.class);
ZigBeeCommand command = Mockito.mock(ZigBeeCommand.class);
Mockito.when(command.getTransactionId()).thenReturn(12);
ZigBeeTransactionFuture transactionFuture = new ZigBeeTransactionFuture();
ZigBeeCommand matchRequest = Mockito.mock(ZigBeeCommand.class);
ZigBeeCommand nomatchRequest = Mockito.mock(ZigBeeCommand.class);
ZigBeeTransactionMatcher matcher = Mockito.mock(ZigBeeTransactionMatcher.class);
Mockito.when(matcher.isTransactionMatch(command, matchRequest)).thenReturn(true);
Mockito.when(matcher.isTransactionMatch(command, nomatchRequest)).thenReturn(false);
ZigBeeTransaction transaction = new ZigBeeTransaction(transactionManager, command, matcher);
transaction.setFuture(transactionFuture);
assertEquals(transactionFuture, transaction.getFuture());
transaction.commandReceived(nomatchRequest);
assertFalse(transactionFuture.isDone());
assertFalse(transactionFuture.isCancelled());
transaction.commandReceived(matchRequest);
assertTrue(transactionFuture.isDone());
assertFalse(transactionFuture.isCancelled());
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Override
public Future<CommandResult> answer(InvocationOnMock invocation) {
ZigBeeCommand command = (ZigBeeCommand) invocation.getArguments()[0];
ZigBeeTransactionFuture commandFuture = new ZigBeeTransactionFuture();
CommandResult result = new CommandResult(responses.get(command.getClusterId()));
commandFuture.set(result);
return commandFuture;
}
}).when(networkManager).sendTransaction(ArgumentMatchers.any(ZigBeeCommand.class),
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Override
public CommandResult get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException {
synchronized (this) {
if (result != null) {
return result;
}
unit.timedWait(this, timeout);
if (result == null) {
set(new CommandResult());
}
return result;
}
}
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Test
public void testTxNak() {
ZigBeeTransactionManager transactionManager = Mockito.mock(ZigBeeTransactionManager.class);
ZigBeeCommand command = Mockito.mock(ZigBeeCommand.class);
Mockito.when(command.getTransactionId()).thenReturn(12);
ZigBeeTransactionMatcher matcher = Mockito.mock(ZigBeeTransactionMatcher.class);
ZigBeeTransactionFuture transactionFuture = new ZigBeeTransactionFuture();
ZigBeeTransaction transaction = new ZigBeeTransaction(transactionManager, command, matcher);
transaction.setFuture(transactionFuture);
transaction.send();
Mockito.verify(transactionManager, Mockito.times(1)).scheduleTask(ArgumentMatchers.any(Runnable.class),
ArgumentMatchers.anyLong());
Mockito.verify(transactionManager, Mockito.times(1)).addTransactionListener(transaction);
Mockito.verify(transactionManager, Mockito.times(1)).send(ArgumentMatchers.any(ZigBeeCommand.class));
// Wrong TID so gets ignored
transaction.commandStatusReceived(ZigBeeTransportProgressState.TX_NAK, 123);
assertFalse(transactionFuture.isDone());
assertFalse(transactionFuture.isCancelled());
// Correct TID
transaction.commandStatusReceived(ZigBeeTransportProgressState.TX_NAK, 12);
Mockito.verify(transactionManager, Mockito.times(1)).removeTransactionListener(transaction);
assertTrue(transactionFuture.isDone());
assertTrue(transactionFuture.isCancelled());
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Override
public Future<CommandResult> answer(InvocationOnMock invocation) {
ZigBeeCommand command = (ZigBeeCommand) invocation.getArguments()[0];
ZigBeeTransactionFuture commandFuture = new ZigBeeTransactionFuture();
CommandResult result = new CommandResult(responses.get(command.getClusterId()));
commandFuture.set(result);
return commandFuture;
}
}).when(networkManager).sendTransaction(ArgumentMatchers.any(ZigBeeCommand.class),
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Test
public void testSendOnly() {
ZigBeeTransactionManager transactionManager = Mockito.mock(ZigBeeTransactionManager.class);
ZigBeeCommand command = Mockito.mock(ZigBeeCommand.class);
Mockito.when(command.getTransactionId()).thenReturn(12);
ZigBeeTransactionFuture transactionFuture = new ZigBeeTransactionFuture();
ZigBeeTransaction transaction = new ZigBeeTransaction(transactionManager, command, null);
transaction.setFuture(transactionFuture);
transaction.send();
Mockito.verify(transactionManager, Mockito.times(1)).scheduleTask(ArgumentMatchers.any(Runnable.class),
ArgumentMatchers.anyLong());
Mockito.verify(transactionManager, Mockito.times(1)).send(command);
Mockito.verify(transactionManager, Mockito.times(0)).addTransactionListener(transaction);
// Wrong TID so gets ignored
transaction.commandStatusReceived(ZigBeeTransportProgressState.TX_NAK, 123);
assertFalse(transactionFuture.isDone());
assertFalse(transactionFuture.isCancelled());
// Correct TID
transaction.commandStatusReceived(ZigBeeTransportProgressState.TX_ACK, 12);
Mockito.verify(transactionManager, Mockito.times(0)).removeTransactionListener(transaction);
assertTrue(transactionFuture.isDone());
assertFalse(transactionFuture.isCancelled());
}
代码示例来源:origin: zsmartsystems/com.zsmartsystems.zigbee
@Test
public void testRxNak() {
ZigBeeTransactionManager transactionManager = Mockito.mock(ZigBeeTransactionManager.class);
ZigBeeCommand command = Mockito.mock(ZigBeeCommand.class);
Mockito.when(command.getTransactionId()).thenReturn(12);
ZigBeeTransactionMatcher matcher = Mockito.mock(ZigBeeTransactionMatcher.class);
ZigBeeTransactionFuture transactionFuture = new ZigBeeTransactionFuture();
ZigBeeTransaction transaction = new ZigBeeTransaction(transactionManager, command, matcher);
transaction.setFuture(transactionFuture);
transaction.send();
Mockito.verify(transactionManager, Mockito.times(1)).scheduleTask(ArgumentMatchers.any(Runnable.class),
ArgumentMatchers.anyLong());
Mockito.verify(transactionManager, Mockito.times(1)).addTransactionListener(transaction);
Mockito.verify(transactionManager, Mockito.times(1)).send(command);
transaction.commandStatusReceived(ZigBeeTransportProgressState.TX_ACK, 12);
Mockito.verify(transactionManager, Mockito.times(2)).scheduleTask(ArgumentMatchers.any(Runnable.class),
ArgumentMatchers.anyLong());
transaction.commandStatusReceived(ZigBeeTransportProgressState.RX_NAK, 12);
Mockito.verify(transactionManager, Mockito.times(1)).removeTransactionListener(transaction);
assertTrue(transactionFuture.isDone());
assertTrue(transactionFuture.isCancelled());
}
内容来源于网络,如有侵权,请联系作者删除!