setup network

This commit is contained in:
hatim boufnichel 2024-04-24 15:40:24 +02:00
parent ceacbbf70e
commit f64b49bf29
4 changed files with 78 additions and 9 deletions

View file

@ -22,6 +22,12 @@ export type MainSettings = {
skipSanityCheck: boolean
disableExternalPayments: boolean
}
export type BitcoinCoreSettings = {
port: number
user: string
pass: string
}
export type TestSettings = MainSettings & { lndSettings: { otherNode: NodeSettings, thirdNode: NodeSettings, fourthNode: NodeSettings }, bitcoinCoreSettings: BitcoinCoreSettings }
export const LoadMainSettingsFromEnv = (): MainSettings => {
return {
watchDogSettings: LoadWatchdogSettingsFromEnv(),
@ -44,7 +50,7 @@ export const LoadMainSettingsFromEnv = (): MainSettings => {
}
}
export const LoadTestSettingsFromEnv = (): MainSettings & { lndSettings: { otherNode: NodeSettings, thirdNode: NodeSettings } } => {
export const LoadTestSettingsFromEnv = (): TestSettings => {
const eventLogPath = `logs/eventLogV2Test${Date.now()}.csv`
const settings = LoadMainSettingsFromEnv()
return {
@ -61,8 +67,18 @@ export const LoadTestSettingsFromEnv = (): MainSettings & { lndSettings: { other
lndAddr: EnvMustBeNonEmptyString("LND_THIRD_ADDR"),
lndCertPath: EnvMustBeNonEmptyString("LND_THIRD_CERT_PATH"),
lndMacaroonPath: EnvMustBeNonEmptyString("LND_THIRD_MACAROON_PATH")
},
fourthNode: {
lndAddr: EnvMustBeNonEmptyString("LND_FOURTH_ADDR"),
lndCertPath: EnvMustBeNonEmptyString("LND_FOURTH_CERT_PATH"),
lndMacaroonPath: EnvMustBeNonEmptyString("LND_FOURTH_MACAROON_PATH")
}
},
skipSanityCheck: true
skipSanityCheck: true,
bitcoinCoreSettings: {
port: EnvMustBeInteger("BITCOIN_CORE_PORT"),
user: EnvMustBeNonEmptyString("BITCOIN_CORE_USER"),
pass: EnvMustBeNonEmptyString("BITCOIN_CORE_PASS")
}
}
}

View file

@ -1,5 +1,5 @@
LND_ADDRESS=127.0.0.1:10001
LND_CERT_PATH=alice-tls.cert
LND_ADDRESS=127.0.0.1:10001 #alice
LND_CERT_PATH=alice-tls.cert #alice
LND_MACAROON_PATH=alice-admin.macaroon
DATABASE_FILE=db.sqlite
JWT_SECRET=bigsecrethere
@ -22,12 +22,19 @@ METRICS_DATABASE_FILE=metrics.sqlite
WATCHDOG_MAX_DIFF_BPS=100
WATCHDOG_MAX_DIFF_SATS=10000
# dave <--> alice <--> carol <--> bob
LND_OTHER_ADDR=127.0.0.1:10002
LND_OTHER_CERT_PATH=bob-tls.cert
LND_OTHER_MACAROON_PATH=bob-admin.macaroon
LND_THIRD_ADDR=127.0.0.1:10004
LND_THIRD_CERT_PATH=dave-tls.cert
LND_THIRD_MACAROON_PATH=dave-admin.macaroon
LND_THIRD_ADDR=127.0.0.1:10003
LND_THIRD_CERT_PATH=carol-tls.cert
LND_THIRD_MACAROON_PATH=carol-admin.macaroon
LND_FOURTH_ADDR=127.0.0.1:10004
LND_FOURTH_CERT_PATH=dave-tls.cert
LND_FOURTH_MACAROON_PATH=dave-admin.macaroon
BITCOIN_CORE_PORT=18443
BITCOIN_CORE_USER=polaruser
BITCOIN_CORE_PASS=polarpass

43
src/tests/networkSetup.ts Normal file
View file

@ -0,0 +1,43 @@
import BitcoinCore from 'bitcoin-core';
import { LoadTestSettingsFromEnv, TestSettings } from "../services/main/settings.js"
import LND from '../services/lnd/lnd.js'
// dave <--> alice <--> carol <--> bob
export const setupNetwork = async () => {
const settings = LoadTestSettingsFromEnv()
const core = await initBitcoinCore(settings)
const { alice, bob, carol, dave } = await initLndInstances(settings)
}
const initLndInstances = async (settings: TestSettings) => {
const alice = new LND(settings.lndSettings, console.log, console.log, () => { }, () => { })
await alice.Warmup()
const bobSettings = { ...settings.lndSettings, mainNode: settings.lndSettings.otherNode }
const bob = new LND(bobSettings, console.log, console.log, () => { }, () => { })
await bob.Warmup()
const carolSettings = { ...settings.lndSettings, mainNode: settings.lndSettings.thirdNode }
const carol = new LND(carolSettings, console.log, console.log, () => { }, () => { })
await carol.Warmup()
const daveSettings = { ...settings.lndSettings, mainNode: settings.lndSettings.fourthNode }
const dave = new LND(daveSettings, console.log, console.log, () => { }, () => { })
await dave.Warmup()
return { alice, bob, carol, dave }
}
const initBitcoinCore = async (settings: TestSettings) => {
const core = new BitcoinCore({
//network: 'regtest',
host: '127.0.0.1',
port: `${settings.bitcoinCoreSettings.port}`,
username: settings.bitcoinCoreSettings.user,
password: settings.bitcoinCoreSettings.pass,
// use a long timeout due to the time it takes to mine a lot of blocks
timeout: 5 * 60 * 1000,
})
const wallet = await core.createWallet('');
console.log({ wallet })
const address = await core.getNewAddress()
console.log({ address })
}

View file

@ -1,4 +1,5 @@
import { globby } from 'globby'
import { setupNetwork } from './networkSetup.js'
import { Describe, SetupTest, teardown, TestBase } from './testBase.js'
@ -19,7 +20,9 @@ const getDescribe = (fileName: string): Describe => {
}
}
const start = async () => {
if (process.argv[2] === 'setup_network') {
await setupNetwork()
}
const files = await globby(["**/*.spec.js", "!**/node_modules/**"])
const modules: { file: string, module: TestModule }[] = []
let devModule = -1