Skip to content

Commit 8a84c52

Browse files
committed
wip
1 parent 999660c commit 8a84c52

File tree

9 files changed

+88
-32
lines changed

9 files changed

+88
-32
lines changed

node-it/src/test/scala/com/wavesplatform/it/account/storage/RemoveEntrySuite.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import com.wavesplatform.account.KeyPair
55
import com.wavesplatform.api.http.ApiError.ScriptExecutionError
66
import com.wavesplatform.common.state.ByteStr
77
import com.wavesplatform.common.utils.EitherExt2.*
8-
import com.wavesplatform.features.BlockchainFeatures
98
import com.wavesplatform.it.BaseFreeSpec
109
import com.wavesplatform.it.api.SyncHttpApi.*
1110
import com.wavesplatform.it.sync.*

node-it/src/test/scala/com/wavesplatform/it/sync/activation/VRFProtobufActivationSuite.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class VRFProtobufActivationSuite extends BaseTransactionSuite {
2323
val updateInterval = 10
2424
import NodeConfigs.*
2525
override protected def nodeConfigs: Seq[Config] = Seq(
26-
BiggestMiner
26+
Miners(5)
2727
.quorum(0)
2828
.preactivatedFeatures((BlockchainFeatures.BlockV5, activationHeight))
2929
.overrides(s"waves.blockchain.custom.functionality.min-asset-info-update-interval = $updateInterval")

node-it/src/test/scala/com/wavesplatform/it/sync/smartcontract/BigLetChain.scala

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,28 @@
11
package com.wavesplatform.it.sync.smartcontract
22

3+
import com.typesafe.config.Config
34
import com.wavesplatform.common.state.ByteStr
45
import com.wavesplatform.common.utils.EitherExt2.*
6+
import com.wavesplatform.features.BlockchainFeatures
7+
import com.wavesplatform.features.BlockchainFeatures.RideV6
8+
import com.wavesplatform.it.BaseFunSuite
59
import com.wavesplatform.it.api.SyncHttpApi.*
610
import com.wavesplatform.it.sync.*
7-
import com.wavesplatform.it.transactions.BaseTransactionSuite
8-
import com.wavesplatform.test.*
911
import com.wavesplatform.lang.v1.estimator.v2.ScriptEstimatorV2
12+
import com.wavesplatform.test.*
1013
import com.wavesplatform.transaction.Asset.Waves
1114
import com.wavesplatform.transaction.Proofs
1215
import com.wavesplatform.transaction.smart.SetScriptTransaction
1316
import com.wavesplatform.transaction.smart.script.ScriptCompiler
1417
import com.wavesplatform.transaction.transfer.TransferTransaction
1518
import org.scalatest.CancelAfterFailure
1619

17-
class BigLetChain extends BaseTransactionSuite with CancelAfterFailure {
20+
class BigLetChain extends BaseFunSuite with CancelAfterFailure {
21+
import com.wavesplatform.it.NodeConfigs.*
22+
override protected def nodeConfigs: Seq[Config] = Seq(
23+
Miners(5).quorum(0).preactivatedFeatures(BlockchainFeatures.BlockV5, RideV6)
24+
)
25+
1826
test("big let assignment chain") {
1927
val count = 280
2028
val scriptText =
@@ -34,7 +42,7 @@ class BigLetChain extends BaseTransactionSuite with CancelAfterFailure {
3442

3543
val pkNewAddress = sender.createKeyPair()
3644

37-
sender.transfer(firstKeyPair, pkNewAddress.toAddress.toString, 10.waves, minFee, waitForTx = true)
45+
sender.transfer(sender.keyPair, pkNewAddress.toAddress.toString, 10.waves, minFee, waitForTx = true)
3846

3947
val scriptSet = SetScriptTransaction.create(1.toByte, pkNewAddress.publicKey, Some(compiledScript), setScriptFee, System.currentTimeMillis(), Proofs.empty).map(_.signWith(pkNewAddress.privateKey))
4048
val scriptSetBroadcast = sender.signedBroadcast(scriptSet.explicitGet().json())

node-it/src/test/scala/com/wavesplatform/it/sync/smartcontract/InvokeSelfPaymentSuite.scala

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,43 @@
11
package com.wavesplatform.it.sync.smartcontract
22

3+
import com.typesafe.config.Config
34
import com.wavesplatform.api.http.ApiError.ScriptExecutionError
4-
import com.wavesplatform.common.state.ByteStr
55
import com.wavesplatform.common.utils.EitherExt2.*
6+
import com.wavesplatform.it.BaseFunSuite
67
import com.wavesplatform.it.api.SyncHttpApi.*
78
import com.wavesplatform.it.sync.*
8-
import com.wavesplatform.it.transactions.BaseTransactionSuite
99
import com.wavesplatform.lang.v1.compiler.Terms.CONST_STRING
1010
import com.wavesplatform.lang.v1.estimator.v2.ScriptEstimatorV2
11-
import com.wavesplatform.transaction.Asset.{IssuedAsset, Waves}
11+
import com.wavesplatform.transaction.Asset.Waves
12+
import com.wavesplatform.transaction.TxHelpers
1213
import com.wavesplatform.transaction.smart.InvokeScriptTransaction
1314
import com.wavesplatform.transaction.smart.script.ScriptCompiler
1415
import com.wavesplatform.transaction.transfer.MassTransferTransaction.Transfer
16+
import com.wavesplatform.test.*
1517
import org.scalatest.CancelAfterFailure
1618

17-
class InvokeSelfPaymentSuite extends BaseTransactionSuite with CancelAfterFailure {
19+
class InvokeSelfPaymentSuite extends BaseFunSuite with CancelAfterFailure {
20+
import com.wavesplatform.it.NodeConfigs.*
21+
override protected val nodeConfigs: Seq[Config] = Seq(Miners(3).quorum(0))
1822

19-
private def caller = firstKeyPair
20-
private def dAppV4 = secondKeyPair
21-
private def dAppV3 = thirdKeyPair
23+
private lazy val caller = sender.keyPair
24+
private val dAppV4 = TxHelpers.signer(1002)
25+
private val dAppV3 = TxHelpers.signer(1003)
2226

23-
private var asset1: IssuedAsset = scala.compiletime.uninitialized
24-
private def asset1Id = asset1.id.toString
27+
private lazy val issueTx = TxHelpers.issue(caller)
2528

26-
private lazy val dAppV3Address: String = dAppV3.toAddress.toString
27-
private lazy val dAppV4Address: String = dAppV4.toAddress.toString
29+
private lazy val asset1 = issueTx.asset
30+
private lazy val asset1Id = asset1.id.toString
31+
32+
private lazy val dAppV3Address = dAppV3.toAddress.toString
33+
private lazy val dAppV4Address = dAppV4.toAddress.toString
2834

2935
test("prerequisite: set contract") {
30-
asset1 = IssuedAsset(ByteStr.decodeBase58(sender.issue(caller, waitForTx = true).id).get)
36+
sender.massTransfer(caller, List(
37+
Transfer(dAppV4.toAddress.toString, 100.waves),
38+
Transfer(dAppV3.toAddress.toString, 100.waves),
39+
), 0.005.waves, waitForTx = true)
40+
sender.signedBroadcast(issueTx.json(), true)
3141

3242
val sourceV4 =
3343
"""{-# STDLIB_VERSION 4 #-}

node-it/src/test/scala/com/wavesplatform/it/sync/transactions/ExchangeTransactionSuite.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,7 @@ class ExchangeTransactionSuite extends BaseTransactionSuite with NTPTime {
369369
)
370370

371371
sender.signedBroadcast(tx.json(), waitForTx = true)
372+
nodes.waitForHeightAriseAndTxPresent(tx.id().toString)
372373

373374
sender.nftList(sellerAddress, limit = 1) shouldBe empty
374375
sender.nftList(buyerAddress, 1).head.assetId shouldBe nftAsset
@@ -393,6 +394,7 @@ class ExchangeTransactionSuite extends BaseTransactionSuite with NTPTime {
393394
)
394395

395396
sender.signedBroadcast(tx2.json(), waitForTx = true)
397+
nodes.waitForHeightAriseAndTxPresent(tx2.id().toString)
396398

397399
sender.nftList(buyerAddress, limit = 1) shouldBe empty
398400
sender.nftList(sellerAddress, 1, None).head.assetId shouldBe nftAsset

node/src/main/scala/com/wavesplatform/api/common/AddressPortfolio.scala

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,13 @@ import com.wavesplatform.database.{AddressId, CurrentBalance, DBResource, Key, K
1010
import com.wavesplatform.state.{AssetDescription, StateSnapshot}
1111
import com.wavesplatform.transaction.Asset
1212
import com.wavesplatform.transaction.Asset.IssuedAsset
13-
import com.wavesplatform.utils.ScorexLogging
1413

1514
import java.nio.ByteBuffer
1615
import scala.collection.immutable.VectorMap
1716
import scala.collection.mutable.ArrayBuffer
1817
import scala.jdk.CollectionConverters.*
1918

20-
class NFTIterator(addressId: AddressId, maybeAfter: Option[IssuedAsset], resource: DBResource)
21-
extends AbstractIterator[Seq[(IssuedAsset, Long)]]
22-
with ScorexLogging {
19+
class NFTIterator(addressId: AddressId, maybeAfter: Option[IssuedAsset], resource: DBResource) extends AbstractIterator[Seq[(IssuedAsset, Long)]] {
2320
private val prefixBytes: Array[Byte] = KeyTag.NftPossession.prefixBytes ++ addressId.toByteArray
2421

2522
resource.withSafePrefixIterator { dbIterator =>

node/src/main/scala/com/wavesplatform/api/common/CommonAccountsApi.scala

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,15 @@ object CommonAccountsApi {
112112
.fold(Array.empty[DataEntry[?]])(_.filter { case (k, _) => pattern.forall(_.matcher(k).matches()) }.values.toArray.sortBy(_.key))
113113

114114
rdb.db.resourceObservable.flatMap { dbResource =>
115-
dbResource.get(Keys.addressId(address)).fold(Observable.fromIterable(entriesFromDiff)) { addressId =>
116-
Observable
117-
.fromIterator(
118-
Task(new AddressDataIterator(dbResource, addressId, entriesFromDiff, pattern).asScala)
119-
)
120-
.filterNot(_.isEmpty)
121-
}
115+
dbResource
116+
.get(Keys.addressId(address))
117+
.fold(Observable.fromIterable(entriesFromDiff)) { addressId =>
118+
Observable
119+
.fromIterator(
120+
Task(new AddressDataIterator(dbResource, addressId, entriesFromDiff, pattern).asScala)
121+
)
122+
}
123+
.filterNot(_.isEmpty)
122124
}
123125
}
124126

node/tests/src/test/scala/com/wavesplatform/api/common/CommonAccountApiSpec.scala

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import com.wavesplatform.lang.v1.traits.domain.{Lease, Recipient}
1111
import com.wavesplatform.settings.TestFunctionalitySettings
1212
import com.wavesplatform.state.{DataEntry, EmptyDataEntry, Height, StringDataEntry, TransactionId, diffs}
1313
import com.wavesplatform.test.DomainPresets.RideV4
14-
import com.wavesplatform.test.FreeSpec
14+
import com.wavesplatform.test.*
1515
import com.wavesplatform.transaction.TxHelpers.data
1616
import com.wavesplatform.transaction.TxVersion.V2
1717
import com.wavesplatform.transaction.{GenesisTransaction, TxHelpers}
@@ -83,6 +83,20 @@ class CommonAccountApiSpec extends FreeSpec with WithDomain with BlocksTransacti
8383
}
8484
}
8585
}
86+
87+
val fundSource = TxHelpers.signer(1003)
88+
val dataSender = TxHelpers.signer(1004)
89+
"filters entries created and deleted in liquid block" in withDomain(DomainPresets.RideV4, Seq(fundSource -> 100.waves)) { d =>
90+
def dataList() = d.accountsApi.dataStream(dataSender.toAddress, None).toListL.runSyncUnsafe()
91+
92+
val e1 = StringDataEntry("k1", "v1")
93+
val e2 = StringDataEntry("k2", "v2")
94+
d.appendKeyBlock()
95+
d.appendMicroBlock(TxHelpers.transfer(fundSource, dataSender.toAddress, 1.waves), TxHelpers.data(dataSender, Seq(e1, e2)))
96+
dataList() shouldBe Seq(e1, e2)
97+
d.appendMicroBlock(TxHelpers.data(dataSender, Seq(EmptyDataEntry("k1"), EmptyDataEntry("k2")), version = 2.toByte))
98+
dataList() shouldBe empty
99+
}
86100
}
87101

88102
"Waves distribution" - {

node/tests/src/test/scala/com/wavesplatform/history/BlockchainUpdaterNFTTest.scala

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,16 @@ import com.wavesplatform.lang.v1.FunctionHeader
1313
import com.wavesplatform.lang.v1.compiler.Terms.FUNCTION_CALL
1414
import com.wavesplatform.lang.v1.estimator.v2.ScriptEstimatorV2
1515
import com.wavesplatform.state.diffs
16-
import com.wavesplatform.test.PropSpec
16+
import com.wavesplatform.test.{NumericExt, PropSpec}
1717
import com.wavesplatform.transaction.Asset.IssuedAsset
18-
import com.wavesplatform.transaction.GenesisTransaction
18+
import com.wavesplatform.transaction.{GenesisTransaction, TxHelpers}
1919
import com.wavesplatform.transaction.assets.IssueTransaction
2020
import com.wavesplatform.transaction.smart.InvokeScriptTransaction
2121
import com.wavesplatform.transaction.smart.script.ScriptCompiler
2222
import org.scalacheck.Gen
2323
import org.scalatest.*
24+
import scala.concurrent.duration.*
25+
import monix.execution.Scheduler.Implicits.global
2426

2527
class BlockchainUpdaterNFTTest extends PropSpec with DomainScenarioDrivenPropertyCheck with BlocksTransactionsHelpers {
2628

@@ -102,6 +104,28 @@ class BlockchainUpdaterNFTTest extends PropSpec with DomainScenarioDrivenPropert
102104
}
103105
}
104106

107+
property("liquid block test") {
108+
val sender = TxHelpers.signer(1004)
109+
val issuer = TxHelpers.signer(1005)
110+
val recipient = TxHelpers.signer(1006)
111+
val r2 = TxHelpers.address(1007)
112+
import DomainPresets.*
113+
withDomain(RideV4.addFeatures(BlockchainFeatures.ReduceNFTFee), Seq(sender -> 10.waves)) { d =>
114+
val issueNFT = TxHelpers.issue(issuer, 1, 0, "AAAA", "", 0.001.waves, reissuable = false)
115+
d.appendBlock(
116+
TxHelpers.transfer(sender, issuer.toAddress, 1.waves),
117+
TxHelpers.transfer(sender, recipient.toAddress, 1.waves),
118+
issueNFT,
119+
TxHelpers.transfer(issuer, recipient.toAddress, 1, issueNFT.asset, 0.001.waves),
120+
TxHelpers.transfer(recipient, r2, 1, issueNFT.asset, 0.001.waves)
121+
)
122+
123+
d.accountsApi.nftList(issuer.toAddress, None).headL.runSyncUnsafe(5.seconds) shouldBe empty
124+
d.accountsApi.nftList(recipient.toAddress, None).headL.runSyncUnsafe(5.seconds) shouldBe empty
125+
d.accountsApi.nftList(r2, None).headL.runSyncUnsafe(5.seconds).map(_._1) shouldBe Seq(issueNFT.asset)
126+
}
127+
}
128+
105129
private object Preconditions {
106130
import UnsafeBlocks.*
107131

0 commit comments

Comments
 (0)