Skip to content

Commit f8d242b

Browse files
committed
Merge remote-tracking branch 'origin/master' into
issue/106-test-coverage Conflicts: src/main/java/io/proximax/sdk/infrastructure/TransactionMapping.java
2 parents cff0f5a + 1a39f26 commit f8d242b

File tree

7 files changed

+108
-17
lines changed

7 files changed

+108
-17
lines changed

src/e2e/java/io/proximax/sdk/E2EBaseTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import java.math.BigDecimal;
2323
import java.math.BigInteger;
2424
import java.net.URL;
25-
import java.time.temporal.ChronoUnit;
2625
import java.util.Collection;
2726
import java.util.Collections;
2827
import java.util.LinkedList;
@@ -40,7 +39,7 @@
4039
import io.proximax.sdk.model.account.Address;
4140
import io.proximax.sdk.model.mosaic.Mosaic;
4241
import io.proximax.sdk.model.mosaic.NetworkCurrencyMosaic;
43-
import io.proximax.sdk.model.transaction.Deadline;
42+
import io.proximax.sdk.model.transaction.DeadlineRaw;
4443
import io.proximax.sdk.model.transaction.PlainMessage;
4544
import io.proximax.sdk.model.transaction.SignedTransaction;
4645
import io.proximax.sdk.model.transaction.TransactionDeadline;
@@ -117,7 +116,7 @@ void cleanup() {
117116
* @return deadline
118117
*/
119118
protected TransactionDeadline getDeadline() {
120-
return new Deadline(5, ChronoUnit.MINUTES);
119+
return DeadlineRaw.startNow(BigInteger.valueOf(5*60*1000l));
121120
}
122121

123122

src/main/java/io/proximax/sdk/infrastructure/TransactionHttp.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import io.proximax.sdk.TransactionRepository;
3333
import io.proximax.sdk.gen.model.TransactionStatusDTO;
3434
import io.proximax.sdk.model.transaction.CosignatureSignedTransaction;
35-
import io.proximax.sdk.model.transaction.DeadlineBP;
35+
import io.proximax.sdk.model.transaction.DeadlineRaw;
3636
import io.proximax.sdk.model.transaction.SignedTransaction;
3737
import io.proximax.sdk.model.transaction.Transaction;
3838
import io.proximax.sdk.model.transaction.TransactionAnnounceResponse;
@@ -91,7 +91,7 @@ public Observable<TransactionStatus> getTransactionStatus(String transactionHash
9191
.map(transactionStatusDTO -> new TransactionStatus(transactionStatusDTO.getGroup(),
9292
transactionStatusDTO.getStatus(),
9393
transactionStatusDTO.getHash(),
94-
new DeadlineBP(toBigInt(transactionStatusDTO.getDeadline())),
94+
new DeadlineRaw(toBigInt(transactionStatusDTO.getDeadline())),
9595
toBigInt(transactionStatusDTO.getHeight())));
9696
}
9797

@@ -107,7 +107,7 @@ public Observable<List<TransactionStatus>> getTransactionStatuses(List<String> t
107107
.map(transactionStatusDTO -> new TransactionStatus(transactionStatusDTO.getGroup(),
108108
transactionStatusDTO.getStatus(),
109109
transactionStatusDTO.getHash(),
110-
new DeadlineBP(toBigInt(transactionStatusDTO.getDeadline())),
110+
new DeadlineRaw(toBigInt(transactionStatusDTO.getDeadline())),
111111
toBigInt(transactionStatusDTO.getHeight())))
112112
.toList()
113113
.toObservable();

src/main/java/io/proximax/sdk/infrastructure/listener/StatusChannelMessage.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import com.google.gson.JsonObject;
99

1010
import io.proximax.sdk.model.account.Address;
11-
import io.proximax.sdk.model.transaction.DeadlineBP;
11+
import io.proximax.sdk.model.transaction.DeadlineRaw;
1212
import io.proximax.sdk.model.transaction.TransactionStatusError;
1313
import io.reactivex.Observable;
1414
import io.reactivex.subjects.Subject;
@@ -38,7 +38,7 @@ private static TransactionStatusError getMessageObject(JsonObject message) {
3838
return new TransactionStatusError(
3939
message.get("hash").getAsString(),
4040
message.get("status").getAsString(),
41-
new DeadlineBP(extractBigInteger(message.getAsJsonArray("deadline"))));
41+
new DeadlineRaw(extractBigInteger(message.getAsJsonArray("deadline"))));
4242

4343
}
4444

src/main/java/io/proximax/sdk/model/transaction/Deadline.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,8 @@
2121
import java.time.temporal.ChronoUnit;
2222

2323
/**
24-
* The deadline of the transaction. The deadline is given as the number of seconds elapsed since the creation of the
24+
* The deadline of the transaction. The deadline is given as the number of milliseconds elapsed since the creation of the
2525
* nemesis block. If a transaction does not get included in a block before the deadline is reached, it is deleted.
26-
*
27-
* @since 1.0
2826
*/
2927
public class Deadline implements TransactionDeadline {
3028

src/main/java/io/proximax/sdk/model/transaction/DeadlineBP.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public DeadlineBP(int units, ChronoUnit chronoUnit) {
4848
/**
4949
* Constructor
5050
*
51-
* @param input Deadline in BigInteger format
51+
* @param input milliseconds since epoch
5252
*/
5353
public DeadlineBP(BigInteger input) {
5454
instant = Instant.ofEpochMilli(input.longValue() + NETWORK_EPOCH_START_MILLIS);
@@ -65,11 +65,7 @@ public static DeadlineBP create(int units, ChronoUnit chronoUnit) {
6565
return new DeadlineBP(units, chronoUnit);
6666
}
6767

68-
/**
69-
* Returns number of seconds elapsed since the creation of the nemesis block.
70-
*
71-
* @return long
72-
*/
68+
@Override
7369
public long getInstant() {
7470
return instant.toEpochMilli() - DeadlineBP.NETWORK_EPOCH.toEpochMilli();
7571
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*
2+
* Copyright 2019 ProximaX Limited. All rights reserved.
3+
* Use of this source code is governed by the Apache 2.0
4+
* license that can be found in the LICENSE file.
5+
*/
6+
package io.proximax.sdk.model.transaction;
7+
8+
import java.math.BigInteger;
9+
import java.util.Date;
10+
11+
/**
12+
* Raw deadline implementation working directly with milliseconds. Consider using {@link Deadline} or {@link DeadlineBP}
13+
*/
14+
public class DeadlineRaw implements TransactionDeadline {
15+
16+
/** milliseconds since epoch */
17+
private final long deadline;
18+
19+
/**
20+
* @param deadline in milliseconds since epoch
21+
*/
22+
public DeadlineRaw(BigInteger deadline) {
23+
this.deadline = deadline.longValue();
24+
}
25+
26+
/**
27+
* create new deadline instance specifying duration since current time
28+
*
29+
* @param duration duration after current time
30+
* @return deadline representing specified time
31+
*/
32+
public static TransactionDeadline startNow(BigInteger duration) {
33+
return new DeadlineRaw(BigInteger
34+
.valueOf(System.currentTimeMillis() - TransactionDeadline.NETWORK_EPOCH_START_MILLIS).add(duration));
35+
}
36+
37+
@Override
38+
public long getInstant() {
39+
return deadline;
40+
}
41+
42+
@Override
43+
public String toString() {
44+
return "DeadlineRaw [deadline=" + new Date(deadline + TransactionDeadline.NETWORK_EPOCH_START_MILLIS) + "]";
45+
}
46+
47+
48+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
* Copyright 2019 ProximaX Limited. All rights reserved.
3+
* Use of this source code is governed by the Apache 2.0
4+
* license that can be found in the LICENSE file.
5+
*/
6+
package io.proximax.sdk.model.transaction;
7+
8+
import static org.junit.jupiter.api.Assertions.assertEquals;
9+
import static org.junit.jupiter.api.Assertions.assertTrue;
10+
11+
import java.math.BigInteger;
12+
import java.time.temporal.ChronoUnit;
13+
14+
import org.junit.jupiter.api.Test;
15+
16+
/**
17+
* {@link DeadlineRaw} tests
18+
*/
19+
class DeadlineRawTest {
20+
private static final long HOUR_MILLIS = 3_600_000l;
21+
private static final long ACCEPTABLE_THRESHOLD = 500l;
22+
@Test
23+
void constructor() {
24+
DeadlineRaw rawDeadline = new DeadlineRaw(BigInteger.valueOf(HOUR_MILLIS));
25+
assertEquals(HOUR_MILLIS, rawDeadline.getInstant());
26+
}
27+
28+
@Test
29+
void startNow() {
30+
Deadline deadline = new Deadline(1, ChronoUnit.HOURS);
31+
TransactionDeadline rawDeadline = DeadlineRaw.startNow(BigInteger.valueOf(HOUR_MILLIS));
32+
long diff = Math.abs(deadline.getInstant() - rawDeadline.getInstant());
33+
assertTrue(diff < ACCEPTABLE_THRESHOLD);
34+
}
35+
36+
@Test
37+
void compareWithDeadline() {
38+
Deadline deadline = new Deadline(BigInteger.valueOf(HOUR_MILLIS));
39+
DeadlineRaw rawDeadline = new DeadlineRaw(BigInteger.valueOf(HOUR_MILLIS));
40+
41+
long diff = Math.abs(deadline.getInstant() - rawDeadline.getInstant());
42+
assertTrue(diff < ACCEPTABLE_THRESHOLD, "difference was "+diff);
43+
}
44+
45+
@Test
46+
void toStringPasses() {
47+
DeadlineRaw rawDeadline = new DeadlineRaw(BigInteger.valueOf(HOUR_MILLIS));
48+
assertTrue(rawDeadline.toString().startsWith("DeadlineRaw"));
49+
}
50+
}

0 commit comments

Comments
 (0)