Skip to content

Commit eab3a5b

Browse files
refactor: move regtest miner test classes from module 'testcontainer' to 'bitcoin-regtest'
1 parent c2c37d3 commit eab3a5b

File tree

37 files changed

+145
-131
lines changed

37 files changed

+145
-131
lines changed

examples/incubator/bitcoin-electrum-gateway-example-application/build.gradle

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@ apply plugin: 'org.springframework.boot'
33
description = 'electrum gateway example application package'
44

55
dependencies {
6-
implementation project(':spring-testcontainer:spring-testcontainer-bitcoind-starter')
6+
implementation project(':incubator:bitcoin-regtest:bitcoin-regtest-starter')
7+
78
implementation project(':spring-testcontainer:spring-testcontainer-electrumx-starter')
89
implementation project(':spring-testcontainer:spring-testcontainer-electrum-daemon-starter')
910
implementation project(':incubator:tbk-electrum-daemon-client:tbk-electrum-daemon-client-starter')
1011

11-
implementation project(':bitcoin-jsonrpc-client:bitcoin-jsonrpc-client-starter')
12-
implementation project(':bitcoin-zeromq-client:bitcoin-zeromq-client-starter')
13-
1412
implementation "io.projectreactor:reactor-core"
1513

1614
implementation 'org.springframework.boot:spring-boot-starter-web'

examples/incubator/bitcoin-electrum-gateway-example-application/src/main/resources/application.yml

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,17 @@ org.tbk.spring.testcontainer.bitcoind:
7777
# Send trace/debug info to console instead of debug.log.
7878
- '-printtoconsole=1'
7979

80-
# mine blocks every 1 - 10 seconds
81-
org.tbk.spring.testcontainer.bitcoind-regtest-miner:
80+
org.tbk.bitcoin.regtest:
8281
enabled: true
83-
# secret to address: truth fever mom transfer steak immense lake jacket glide bring fancy electric
84-
coinbase-reward-address: bcrt1q0xtrupsjmqr7u7xz4meufd3a8pt6v553m8nmvz
85-
mine-initial-amount-of-blocks: 100
86-
next-block-duration:
87-
min-duration-in-millis: 1000
88-
max-duration-in-millis: 10000
82+
# mine blocks every 1 - 10 seconds
83+
miner:
84+
enabled: true
85+
# secret to address: truth fever mom transfer steak immense lake jacket glide bring fancy electric
86+
coinbase-reward-address: bcrt1q0xtrupsjmqr7u7xz4meufd3a8pt6v553m8nmvz
87+
mine-initial-amount-of-blocks: 100
88+
next-block-duration:
89+
min-duration-in-millis: 1000
90+
max-duration-in-millis: 10000
8991

9092
org.tbk.bitcoin.jsonrpc:
9193
network: regtest

examples/lnd-playground-example-application/build.gradle

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,11 @@ apply plugin: 'org.springframework.boot'
33
description = 'lnd testcontainer example application package'
44

55
dependencies {
6-
implementation project(':spring-testcontainer:spring-testcontainer-bitcoind-starter')
7-
implementation project(':spring-testcontainer:spring-testcontainer-lnd-starter')
6+
implementation project(':incubator:bitcoin-regtest:bitcoin-regtest-starter')
87

8+
implementation project(':spring-testcontainer:spring-testcontainer-lnd-starter')
99
implementation project(':lnd-grpc-client:lnd-grpc-client-starter')
1010

11-
implementation project(':bitcoin-jsonrpc-client:bitcoin-jsonrpc-client-starter')
12-
implementation project(':bitcoin-zeromq-client:bitcoin-zeromq-client-starter')
13-
1411
implementation "io.projectreactor:reactor-core"
1512

1613
implementation 'org.springframework.boot:spring-boot-starter-web'

examples/lnd-playground-example-application/src/main/resources/application.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,14 @@ org.tbk.spring.testcontainer.bitcoind:
7373
# Send trace/debug info to console instead of debug.log.
7474
- '-printtoconsole=1'
7575

76-
# mine blocks every 1 - 10 seconds
77-
org.tbk.spring.testcontainer.bitcoind-regtest-miner:
76+
org.tbk.bitcoin.regtest:
7877
enabled: true
79-
next-block-duration:
80-
min-duration-in-millis: 1000
81-
max-duration-in-millis: 10000
78+
# mine blocks every 1 - 10 seconds
79+
miner:
80+
enabled: true
81+
next-block-duration:
82+
min-duration-in-millis: 1000
83+
max-duration-in-millis: 10000
8284

8385
org.tbk.bitcoin.jsonrpc:
8486
network: regtest

incubator/bitcoin-mqtt/bitcoin-mqtt-server-example-application/build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ description = 'bitcoin mqtt server example application package'
55
dependencies {
66
implementation project(':incubator:bitcoin-mqtt:bitcoin-mqtt-server-starter')
77

8-
implementation project(':bitcoin-jsonrpc-client:bitcoin-jsonrpc-client-starter')
9-
implementation project(':spring-testcontainer:spring-testcontainer-bitcoind-starter')
8+
implementation project(':incubator:bitcoin-regtest:bitcoin-regtest-starter')
109

1110
implementation 'org.flywaydb:flyway-core'
1211
implementation "org.xerial:sqlite-jdbc:${sqliteVersion}"

incubator/bitcoin-mqtt/bitcoin-mqtt-server-example-application/src/main/resources/application.yml

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,16 @@ org.tbk.spring.testcontainer.bitcoind:
3939
# Enable publishing of transaction hashes to <address>.
4040
- '-zmqpubhashtx=tcp://0.0.0.0:28335'
4141

42-
# mine blocks every 1 - 10 seconds
43-
org.tbk.spring.testcontainer.bitcoind-regtest-miner:
42+
org.tbk.bitcoin.regtest:
4443
enabled: true
45-
# secret to address: across distance search gym explain fruit sense tiny decrease ribbon day course
46-
coinbase-reward-address: bcrt1q0lhr8js5rrhjl7hf6e80ns3pgk5tjswgg9um9t
47-
next-block-duration:
48-
min-duration-in-millis: 1000
49-
max-duration-in-millis: 10000
44+
# mine blocks every 1 - 10 seconds
45+
miner:
46+
enabled: true
47+
# secret to address: across distance search gym explain fruit sense tiny decrease ribbon day course
48+
coinbase-reward-address: bcrt1q0lhr8js5rrhjl7hf6e80ns3pgk5tjswgg9um9t
49+
next-block-duration:
50+
min-duration-in-millis: 1000
51+
max-duration-in-millis: 10000
5052

5153
org.tbk.bitcoin.jsonrpc:
5254
network: regtest
@@ -74,4 +76,4 @@ org.tbk.mqtt.moquette.broker:
7476
'authenticator.db.digest': SHA-256
7577

7678
org.tbk.bitcoin.tool.mqtt.server:
77-
enabled: true
79+
enabled: true

incubator/bitcoin-mqtt/bitcoin-mqtt-server-starter/build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ dependencies {
1313

1414
implementation 'org.springframework.boot:spring-boot-starter'
1515

16-
integTestImplementation project(':bitcoin-jsonrpc-client:bitcoin-jsonrpc-client-starter')
17-
integTestImplementation project(':spring-testcontainer:spring-testcontainer-bitcoind-starter')
16+
integTestImplementation project(':incubator:bitcoin-regtest:bitcoin-regtest-starter')
1817

1918
integTestImplementation 'org.springframework.integration:spring-integration-mqtt'
2019
}

incubator/bitcoin-mqtt/bitcoin-mqtt-server-starter/src/integTest/java/org/tbk/bitcoin/tool/mqtt/BitcoinMqttServerStarterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
import org.springframework.messaging.MessageHandler;
2020
import org.springframework.messaging.MessagingException;
2121
import org.springframework.test.context.ActiveProfiles;
22+
import org.tbk.bitcoin.regtest.BitcoindRegtestMiner;
2223
import org.tbk.bitcoin.tool.mqtt.config.BitcoinMqttServerAutoConfigProperties;
23-
import org.tbk.spring.testcontainer.bitcoind.regtest.BitcoindRegtestMiner;
2424
import reactor.core.publisher.Flux;
2525

2626
import java.time.Duration;

incubator/bitcoin-mqtt/bitcoin-mqtt-server-starter/src/integTest/resources/application-test.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@ org.tbk.spring.testcontainer.bitcoind:
1818
# Enable publishing of transaction hashes to <address>.
1919
- '-zmqpubhashtx=tcp://0.0.0.0:28335'
2020

21-
# mine blocks every 1 - 10 seconds
22-
org.tbk.spring.testcontainer.bitcoind-regtest-miner:
21+
org.tbk.bitcoin.regtest:
2322
enabled: true
24-
# secret to address: across distance search gym explain fruit sense tiny decrease ribbon day course
25-
coinbase-reward-address: bcrt1q0lhr8js5rrhjl7hf6e80ns3pgk5tjswgg9um9t
26-
scheduled-mining-enabled: false
23+
miner:
24+
enabled: true
25+
# secret to address: across distance search gym explain fruit sense tiny decrease ribbon day course
26+
coinbase-reward-address: bcrt1q0lhr8js5rrhjl7hf6e80ns3pgk5tjswgg9um9t
27+
scheduled-mining-enabled: false
2728

2829
org.tbk.bitcoin.jsonrpc:
2930
network: regtest

incubator/bitcoin-regtest/bitcoin-regtest-autoconfigure/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
description = 'bitcoin regtest autoconfigure package'
66

77
dependencies {
8-
compileOnly project(':bitcoin-jsonrpc-client:bitcoin-jsonrpc-client-core')
8+
compileOnly project(':incubator:bitcoin-regtest:bitcoin-regtest-core')
99

1010
implementation project(':bitcoin-jsonrpc-client:bitcoin-jsonrpc-client-autoconfigure')
1111

incubator/bitcoin-regtest/bitcoin-regtest-autoconfigure/src/main/java/org/tbk/bitcoin/regtest/config/BitcoinRegtestAutoConfigProperties.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ public class BitcoinRegtestAutoConfigProperties implements Validator {
1717
*/
1818
private boolean enabled;
1919

20+
private BitcoindRegtestMinerProperties miner;
21+
2022
@Override
2123
public boolean supports(Class<?> clazz) {
2224
return clazz == BitcoinRegtestAutoConfigProperties.class;
Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.tbk.spring.testcontainer.bitcoind.regtest;
1+
package org.tbk.bitcoin.regtest.config;
22

33
import com.google.common.base.Stopwatch;
44
import com.google.common.util.concurrent.AbstractScheduledService;
@@ -11,12 +11,14 @@
1111
import org.bitcoinj.core.Sha256Hash;
1212
import org.springframework.beans.factory.InitializingBean;
1313
import org.springframework.beans.factory.annotation.Qualifier;
14+
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
1415
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
16+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
1517
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
1618
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
17-
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1819
import org.springframework.context.annotation.Bean;
1920
import org.springframework.context.annotation.Configuration;
21+
import org.tbk.bitcoin.regtest.*;
2022

2123
import java.time.Duration;
2224
import java.util.List;
@@ -27,20 +29,21 @@
2729

2830
@Slf4j
2931
@Configuration(proxyBeanMethods = false)
30-
@EnableConfigurationProperties(BitcoindRegtestMinerProperties.class)
31-
@ConditionalOnProperty(value = "org.tbk.spring.testcontainer.bitcoind-regtest-miner.enabled", havingValue = "true")
32+
@ConditionalOnClass(BitcoindRegtestMiner.class)
33+
@ConditionalOnProperty(value = "org.tbk.bitcoin.regtest.miner.enabled", havingValue = "true")
34+
@AutoConfigureAfter(BitcoinRegtestAutoConfiguration.class)
3235
public class BitcoindRegtestMinerAutoConfiguration {
3336

3437
private final BitcoindRegtestMinerProperties properties;
3538

36-
public BitcoindRegtestMinerAutoConfiguration(BitcoindRegtestMinerProperties properties) {
37-
this.properties = requireNonNull(properties);
39+
public BitcoindRegtestMinerAutoConfiguration(BitcoinRegtestAutoConfigProperties properties) {
40+
this.properties = requireNonNull(properties.getMiner());
3841
}
3942

4043
@Bean
4144
@ConditionalOnBean({BitcoinClient.class})
42-
@ConditionalOnMissingBean(CoinbaseRewardAddressSupplier.class)
43-
@ConditionalOnProperty(value = "org.tbk.spring.testcontainer.bitcoind-regtest-miner.coinbase-reward-address")
45+
@ConditionalOnMissingBean
46+
@ConditionalOnProperty(value = "org.tbk.bitcoin.regtest.miner.coinbase-reward-address")
4447
public CoinbaseRewardAddressSupplier staticCoinbaseRewardAddressSupplier(BitcoinClient bitcoinJsonRpcClient) {
4548
return this.properties.getCoinbaseRewardAddress()
4649
.map(it -> Address.fromString(bitcoinJsonRpcClient.getNetParams(), it))
@@ -50,14 +53,14 @@ public CoinbaseRewardAddressSupplier staticCoinbaseRewardAddressSupplier(Bitcoin
5053

5154
@Bean
5255
@ConditionalOnBean({BitcoinClient.class})
53-
@ConditionalOnMissingBean(CoinbaseRewardAddressSupplier.class)
56+
@ConditionalOnMissingBean
5457
public CoinbaseRewardAddressSupplier bitcoinClientCoinbaseRewardAddressSupplier(BitcoinClient bitcoinJsonRpcClient) {
5558
return new BitcoinClientCoinbaseRewardAddressSupplier(bitcoinJsonRpcClient);
5659
}
5760

5861
@Bean
5962
@ConditionalOnBean({BitcoinClient.class})
60-
@ConditionalOnMissingBean(BitcoindRegtestMiner.class)
63+
@ConditionalOnMissingBean
6164
public BitcoindRegtestMiner bitcoindRegtestMiner(BitcoinClient bitcoinJsonRpcClient,
6265
CoinbaseRewardAddressSupplier coinbaseRewardAddressSupplier) {
6366
return new BitcoindRegtestMinerImpl(bitcoinJsonRpcClient, coinbaseRewardAddressSupplier);
@@ -83,7 +86,7 @@ public MinMaxDurationScheduler bitcoindRegtestMinerScheduler() {
8386
MinMaxDurationScheduler.class
8487
})
8588
@ConditionalOnMissingBean(ScheduledBitcoindRegtestMiner.class)
86-
@ConditionalOnProperty(value = "org.tbk.spring.testcontainer.bitcoind-regtest-miner.scheduled-mining-enabled", havingValue = "true", matchIfMissing = true)
89+
@ConditionalOnProperty(value = "org.tbk.bitcoin.regtest.miner.scheduled-mining-enabled", havingValue = "true", matchIfMissing = true)
8790
public ScheduledBitcoindRegtestMiner scheduledBitcoindRegtestMiner(BitcoindRegtestMiner bitcoindRegtestMiner,
8891
@Qualifier("bitcoindRegtestMinerScheduler") Scheduler scheduler) {
8992
ScheduledBitcoindRegtestMiner scheduledBitcoindRegtestMiner = new ScheduledBitcoindRegtestMiner(bitcoindRegtestMiner, scheduler);
@@ -131,7 +134,7 @@ public MinMaxDurationScheduler(@NonNull Duration minDuration, @NonNull Duration
131134
}
132135

133136
@Override
134-
protected Schedule getNextSchedule() throws Exception {
137+
protected Schedule getNextSchedule() {
135138
long minMillis = minDuration.toMillis();
136139
long maxMillis = maxDuration.toMillis();
137140

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.tbk.spring.testcontainer.bitcoind.regtest;
1+
package org.tbk.bitcoin.regtest.config;
22

33
import lombok.Data;
44
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -9,18 +9,14 @@
99
import java.util.Optional;
1010

1111
@Data
12-
@ConfigurationProperties(
13-
prefix = "org.tbk.spring.testcontainer.bitcoind-regtest-miner",
14-
ignoreUnknownFields = false
15-
)
1612
public class BitcoindRegtestMinerProperties implements Validator {
1713
private static final NextBlockDurationProperties DEFAULT_NEXT_BLOCK_DURATION = new NextBlockDurationProperties() {{
1814
setMinDurationInMillis(1_000L);
1915
setMaxDurationInMillis(10_000L);
2016
}};
2117

2218
/**
23-
* Whether the client should be enabled
19+
* Whether the miner should be enabled
2420
*/
2521
private boolean enabled;
2622

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
2-
org.tbk.bitcoin.regtest.config.BitcoinRegtestAutoConfiguration
2+
org.tbk.bitcoin.regtest.config.BitcoinRegtestAutoConfiguration,\
3+
org.tbk.bitcoin.regtest.config.BitcoindRegtestMinerAutoConfiguration
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
plugins {
2+
id 'java'
3+
}
4+
5+
description = 'bitcoin regtest core package'
6+
7+
dependencies {
8+
api project(':bitcoin-jsonrpc-client:bitcoin-jsonrpc-client-core')
9+
10+
testImplementation project(':bitcoin-jsonrpc-client:bitcoin-jsonrpc-client-starter')
11+
integTestImplementation project(':spring-testcontainer:spring-testcontainer-bitcoind-starter')
12+
13+
testImplementation "io.projectreactor:reactor-core"
14+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.tbk.spring.testcontainer.bitcoind.regtest;
1+
package org.tbk.bitcoin.regtest;
22

33
import com.google.common.util.concurrent.AbstractScheduledService;
44
import com.msgilligan.bitcoinj.json.pojo.BlockChainInfo;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.tbk.spring.testcontainer.bitcoind.regtest;
1+
package org.tbk.bitcoin.regtest;
22

33
import com.msgilligan.bitcoinj.rpc.BitcoinClient;
44
import org.bitcoinj.core.Address;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.tbk.spring.testcontainer.bitcoind.regtest;
1+
package org.tbk.bitcoin.regtest;
22

33
import org.bitcoinj.core.Sha256Hash;
44

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.tbk.spring.testcontainer.bitcoind.regtest;
1+
package org.tbk.bitcoin.regtest;
22

33
import com.google.common.collect.Lists;
44
import com.msgilligan.bitcoinj.rpc.BitcoinClient;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.tbk.spring.testcontainer.bitcoind.regtest;
1+
package org.tbk.bitcoin.regtest;
22

33
import org.bitcoinj.core.Address;
44

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.tbk.spring.testcontainer.bitcoind.regtest;
1+
package org.tbk.bitcoin.regtest;
22

33
import com.google.common.util.concurrent.AbstractScheduledService;
44
import lombok.extern.slf4j.Slf4j;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.tbk.spring.testcontainer.bitcoind.regtest;
1+
package org.tbk.bitcoin.regtest;
22

33
import org.bitcoinj.core.Address;
44

incubator/bitcoin-regtest/bitcoin-regtest-starter/build.gradle

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,19 @@ plugins {
55
description = 'bitcoin regtest starter package'
66

77
dependencies {
8+
api project(':incubator:bitcoin-regtest:bitcoin-regtest-core')
89
api project(':incubator:bitcoin-regtest:bitcoin-regtest-autoconfigure')
910

11+
api project(':spring-testcontainer:spring-testcontainer-bitcoind-starter')
1012
api project(':bitcoin-jsonrpc-client:bitcoin-jsonrpc-client-starter')
1113
api project(':bitcoin-zeromq-client:bitcoin-zeromq-client-starter')
1214

13-
api project(':lnd-grpc-client:lnd-grpc-client-starter')
15+
// api project(':spring-testcontainer:spring-testcontainer-lnd-starter')
16+
// api project(':lnd-grpc-client:lnd-grpc-client-starter')
1417

15-
api project(':spring-testcontainer:spring-testcontainer-bitcoind-starter')
16-
api project(':spring-testcontainer:spring-testcontainer-lnd-starter')
18+
// api project(':spring-testcontainer:spring-testcontainer-electrumx-starter')
19+
// api project(':spring-testcontainer:spring-testcontainer-electrum-daemon-starter')
20+
// api project(':incubator:tbk-electrum-daemon-client:tbk-electrum-daemon-client-starter')
1721

1822
implementation 'org.springframework.boot:spring-boot-starter'
1923
}

incubator/tbk-electrum-daemon-client/tbk-electrum-daemon-client-core/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ dependencies {
1010
implementation "org.apache.httpcomponents:httpcore:${httpComponentsVersion}"
1111
implementation "org.apache.httpcomponents:httpclient:${httpComponentsClientVersion}"
1212

13+
integTestImplementation project(':incubator:bitcoin-regtest:bitcoin-regtest-starter')
1314
integTestImplementation project(':spring-testcontainer:spring-testcontainer-test')
1415
integTestImplementation project(':spring-testcontainer:spring-testcontainer-electrumx-starter')
1516
integTestImplementation project(':spring-testcontainer:spring-testcontainer-electrum-daemon-starter')

0 commit comments

Comments
 (0)