Skip to content

Commit eeb9ad0

Browse files
committed
enable query tests
Signed-off-by: Marin Veršić <marin.versic101@gmail.com>
1 parent d674770 commit eeb9ad0

File tree

19 files changed

+1450
-1237
lines changed

19 files changed

+1450
-1237
lines changed

examples/tutorial/src/main/kotlin/jp/co/soramitsu/iroha2/Query.kt

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
package jp.co.soramitsu.iroha2
22

3-
import jp.co.soramitsu.iroha2.generated.*
3+
import jp.co.soramitsu.iroha2.generated.AccountId
4+
import jp.co.soramitsu.iroha2.generated.AccountIdPredicateAtom
5+
import jp.co.soramitsu.iroha2.generated.AccountIdProjectionOfPredicateMarker
6+
import jp.co.soramitsu.iroha2.generated.AssetDefinitionId
7+
import jp.co.soramitsu.iroha2.generated.AssetIdProjectionOfPredicateMarker
8+
import jp.co.soramitsu.iroha2.generated.AssetProjectionOfPredicateMarker
9+
import jp.co.soramitsu.iroha2.generated.AssetValue
10+
import jp.co.soramitsu.iroha2.generated.CompoundPredicateOfAccount
11+
import jp.co.soramitsu.iroha2.generated.CompoundPredicateOfAsset
12+
import jp.co.soramitsu.iroha2.generated.CompoundPredicateOfDomain
413
import jp.co.soramitsu.iroha2.query.QueryBuilder
514
import java.math.BigInteger
615
import java.security.KeyPair
@@ -28,13 +37,21 @@ open class Query(
2837
.findAssets(filter).signAs(admin, keyPair),
2938
)
3039

31-
suspend fun getAccountAmount(accountId: AccountId, assetDefinitionId: AssetDefinitionId): BigInteger = client.submit(
32-
QueryBuilder.findAssetsByAccountId(accountId)
33-
.signAs(admin, keyPair),
34-
)
35-
.let { query ->
36-
query.find { it.id.definition == assetDefinitionId }?.value
37-
}.let { value ->
38-
value?.cast<AssetValue.Numeric>()?.numeric?.mantissa
39-
} ?: throw RuntimeException("NOT FOUND")
40+
suspend fun getAccountAmount(accountId: AccountId, assetDefinitionId: AssetDefinitionId): BigInteger {
41+
val byAccountIdFilter = CompoundPredicateOfAsset.Atom(
42+
AssetProjectionOfPredicateMarker.Id(
43+
AssetIdProjectionOfPredicateMarker.Account(
44+
AccountIdProjectionOfPredicateMarker.Atom(
45+
AccountIdPredicateAtom.Equals(accountId),
46+
),
47+
),
48+
),
49+
)
50+
client.submit(QueryBuilder.findAssets(byAccountIdFilter).signAs(admin, keyPair))
51+
.let { query ->
52+
query.find { it.id.definition == assetDefinitionId }?.value
53+
}.let { value ->
54+
value?.cast<AssetValue.Numeric>()?.numeric?.mantissa
55+
} ?: throw RuntimeException("NOT FOUND")
56+
}
4057
}

modules/admin-client/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,7 @@ dependencies {
44

55
implementation "io.ktor:ktor-client-core:$ktorVer"
66
implementation "io.ktor:ktor-client-cio:$ktorVer"
7+
8+
testApi project(":test-tools")
9+
testImplementation "org.jetbrains.kotlin:kotlin-test-junit5:$kotlinVer"
710
}

modules/admin-client/src/test/kotlin/jp/co/soramitsu/iroha2/ClientTest.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,4 @@ class ClientTest : IrohaTest<AdminIroha2Client>() {
4545
val configs = client.getConfigs()
4646
assert(configs.isNotEmpty())
4747
}
48-
49-
companion object {
50-
private const val PEER_AMOUNT = 4
51-
}
5248
}

modules/client/src/main/kotlin/jp/co/soramitsu/iroha2/Extractors.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,10 @@ inline fun <reified R> extract(value: QueryOutputBatchBox): List<R> = when (valu
217217
is QueryOutputBatchBox.Block -> value.vec.cast<List<R>>()
218218
is QueryOutputBatchBox.BlockHeader -> value.vec.cast<List<R>>()
219219
is QueryOutputBatchBox.Trigger -> value.vec.cast<List<R>>()
220+
is QueryOutputBatchBox.Role -> value.vec.cast<List<R>>()
221+
is QueryOutputBatchBox.RoleId -> value.vec.cast<List<R>>()
222+
is QueryOutputBatchBox.TriggerId -> value.vec.cast<List<R>>()
223+
is QueryOutputBatchBox.CommittedTransaction -> value.vec.cast<List<R>>()
220224

221225
else -> throw QueryPayloadExtractionException(
222226
"Unexpected type `${value::class.qualifiedName}`",

modules/client/src/main/kotlin/jp/co/soramitsu/iroha2/client/Iroha2Client.kt

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,58 @@ import io.ktor.client.plugins.auth.providers.BasicAuthCredentials
1616
import io.ktor.client.plugins.auth.providers.basic
1717
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
1818
import io.ktor.client.plugins.logging.Logging
19-
import io.ktor.client.plugins.websocket.*
19+
import io.ktor.client.plugins.websocket.WebSockets
20+
import io.ktor.client.plugins.websocket.webSocket
2021
import io.ktor.client.request.parameter
2122
import io.ktor.client.request.post
2223
import io.ktor.client.request.setBody
2324
import io.ktor.client.statement.HttpResponse
2425
import io.ktor.serialization.jackson.jackson
25-
import io.ktor.websocket.*
26-
import jp.co.soramitsu.iroha2.*
26+
import io.ktor.websocket.Frame
27+
import io.ktor.websocket.readBytes
28+
import jp.co.soramitsu.iroha2.IrohaClientException
29+
import jp.co.soramitsu.iroha2.TransactionRejectedException
30+
import jp.co.soramitsu.iroha2.WebSocketProtocolException
31+
import jp.co.soramitsu.iroha2.asHashOf
32+
import jp.co.soramitsu.iroha2.cast
2733
import jp.co.soramitsu.iroha2.client.balancing.RoundRobinStrategy
2834
import jp.co.soramitsu.iroha2.client.blockstream.BlockStreamContext
2935
import jp.co.soramitsu.iroha2.client.blockstream.BlockStreamStorage
3036
import jp.co.soramitsu.iroha2.client.blockstream.BlockStreamSubscription
31-
import jp.co.soramitsu.iroha2.generated.*
37+
import jp.co.soramitsu.iroha2.extract
38+
import jp.co.soramitsu.iroha2.extractBlock
39+
import jp.co.soramitsu.iroha2.generated.AccountId
40+
import jp.co.soramitsu.iroha2.generated.BlockEventFilter
41+
import jp.co.soramitsu.iroha2.generated.BlockMessage
42+
import jp.co.soramitsu.iroha2.generated.BlockStatus
43+
import jp.co.soramitsu.iroha2.generated.EventBox
44+
import jp.co.soramitsu.iroha2.generated.EventFilterBox
45+
import jp.co.soramitsu.iroha2.generated.EventMessage
46+
import jp.co.soramitsu.iroha2.generated.EventSubscriptionRequest
47+
import jp.co.soramitsu.iroha2.generated.ForwardCursor
48+
import jp.co.soramitsu.iroha2.generated.PipelineEventBox
49+
import jp.co.soramitsu.iroha2.generated.PipelineEventFilterBox
50+
import jp.co.soramitsu.iroha2.generated.QueryResponse
51+
import jp.co.soramitsu.iroha2.generated.SignedQuery
52+
import jp.co.soramitsu.iroha2.generated.SignedTransaction
53+
import jp.co.soramitsu.iroha2.generated.TransactionEventFilter
54+
import jp.co.soramitsu.iroha2.generated.TransactionRejectionReason
55+
import jp.co.soramitsu.iroha2.generated.TransactionStatus
56+
import jp.co.soramitsu.iroha2.hash
57+
import jp.co.soramitsu.iroha2.height
3258
import jp.co.soramitsu.iroha2.query.QueryAndExtractor
3359
import jp.co.soramitsu.iroha2.query.QueryBuilder
60+
import jp.co.soramitsu.iroha2.toHex
3461
import jp.co.soramitsu.iroha2.transaction.Instruction
3562
import jp.co.soramitsu.iroha2.transaction.TransactionBuilder
36-
import kotlinx.coroutines.*
63+
import kotlinx.coroutines.CompletableDeferred
64+
import kotlinx.coroutines.CoroutineScope
65+
import kotlinx.coroutines.Deferred
66+
import kotlinx.coroutines.Dispatchers
67+
import kotlinx.coroutines.SupervisorJob
68+
import kotlinx.coroutines.coroutineScope
69+
import kotlinx.coroutines.delay
70+
import kotlinx.coroutines.launch
3771
import kotlinx.coroutines.sync.Mutex
3872
import org.slf4j.Logger
3973
import org.slf4j.LoggerFactory

0 commit comments

Comments
 (0)