Skip to content

Commit 072630f

Browse files
committed
Fix e2e
1 parent 5ea0a74 commit 072630f

File tree

8 files changed

+132
-0
lines changed

8 files changed

+132
-0
lines changed

e2e/base_test.go

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,75 @@ func (s *E2ETestSuite) RegisterPeers(t *testing.T) {
264264
t.Log("Peer listing completed")
265265
}
266266

267+
// SeedPreParams loads pre-generated ECDSA pre-parameters from fixture files
268+
// and writes them into each node's BadgerDB. This avoids the expensive safe-prime
269+
// generation at node startup which can take minutes on CI runners.
270+
func (s *E2ETestSuite) SeedPreParams(t *testing.T) {
271+
t.Log("Seeding pre-generated pre-params into node databases...")
272+
273+
// Load fixture files
274+
fixtureData := make([][]byte, 2)
275+
for i := 0; i < 2; i++ {
276+
path := filepath.Join(s.testDir, "fixtures", fmt.Sprintf("pre_params_%d.json", i))
277+
data, err := os.ReadFile(path)
278+
if err != nil {
279+
t.Logf("Warning: could not read pre-params fixture %s: %v (nodes will generate their own)", path, err)
280+
return
281+
}
282+
fixtureData[i] = data
283+
}
284+
285+
// Read the badger password from a node config
286+
configPath := filepath.Join(s.testDir, "test_node0", "config.yaml")
287+
configData, err := os.ReadFile(configPath)
288+
require.NoError(t, err, "Failed to read node config for badger password")
289+
290+
var nodeConfig struct {
291+
BadgerPassword string `yaml:"badger_password"`
292+
DbPath string `yaml:"db_path"`
293+
}
294+
require.NoError(t, yaml.Unmarshal(configData, &nodeConfig), "Failed to parse node config")
295+
296+
dbBasePath := nodeConfig.DbPath
297+
if dbBasePath == "" {
298+
dbBasePath = "./db"
299+
}
300+
301+
for i := 0; i < numNodes; i++ {
302+
nodeName := fmt.Sprintf("test_node%d", i)
303+
nodeDir := filepath.Join(s.testDir, nodeName)
304+
dbPath := filepath.Join(nodeDir, dbBasePath, nodeName)
305+
306+
// Ensure the DB directory exists
307+
require.NoError(t, os.MkdirAll(dbPath, 0755), "Failed to create DB directory for %s", nodeName)
308+
309+
// Open BadgerDB with the same options the node uses
310+
opts := badger.DefaultOptions(dbPath).
311+
WithCompression(options.ZSTD).
312+
WithEncryptionKey([]byte(nodeConfig.BadgerPassword)).
313+
WithIndexCacheSize(16 << 20).
314+
WithBlockCacheSize(32 << 20).
315+
WithLogger(nil)
316+
317+
db, err := badger.Open(opts)
318+
require.NoError(t, err, "Failed to open BadgerDB for %s", nodeName)
319+
320+
// Write pre-params
321+
for j := 0; j < 2; j++ {
322+
key := fmt.Sprintf("pre_params_%d", j)
323+
err := db.Update(func(txn *badger.Txn) error {
324+
return txn.Set([]byte(key), fixtureData[j])
325+
})
326+
require.NoError(t, err, "Failed to seed %s for %s", key, nodeName)
327+
}
328+
329+
require.NoError(t, db.Close(), "Failed to close BadgerDB for %s", nodeName)
330+
t.Logf("Seeded pre-params for %s", nodeName)
331+
}
332+
333+
t.Log("Pre-params seeding complete")
334+
}
335+
267336
func (s *E2ETestSuite) StartNodes(t *testing.T) {
268337
t.Log("Starting MPC nodes...")
269338

e2e/cmd/generate-preparams/main.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// generate-preparams pre-computes ECDSA pre-parameters and writes them as
2+
// JSON fixture files. Run once from the e2e directory (or whenever you need
3+
// fresh fixtures):
4+
//
5+
// cd e2e && go run ./cmd/generate-preparams
6+
//
7+
// The output files (fixtures/pre_params_{0,1}.json) are checked into the repo
8+
// so that E2E tests can seed them into each node's BadgerDB, avoiding the
9+
// expensive safe-prime generation at node startup.
10+
package main
11+
12+
import (
13+
"encoding/json"
14+
"fmt"
15+
"os"
16+
"path/filepath"
17+
"time"
18+
19+
"github.com/bnb-chain/tss-lib/v2/ecdsa/keygen"
20+
)
21+
22+
func main() {
23+
outDir := "fixtures"
24+
if err := os.MkdirAll(outDir, 0755); err != nil {
25+
fmt.Fprintf(os.Stderr, "MkdirAll: %v\n", err)
26+
os.Exit(1)
27+
}
28+
29+
for i := 0; i < 2; i++ {
30+
fmt.Printf("Generating pre_params_%d (this may take a minute)...\n", i)
31+
start := time.Now()
32+
params, err := keygen.GeneratePreParams(5 * time.Minute)
33+
if err != nil {
34+
fmt.Fprintf(os.Stderr, "GeneratePreParams failed: %v\n", err)
35+
os.Exit(1)
36+
}
37+
fmt.Printf(" done in %s\n", time.Since(start).Round(time.Millisecond))
38+
39+
data, err := json.Marshal(params)
40+
if err != nil {
41+
fmt.Fprintf(os.Stderr, "json.Marshal failed: %v\n", err)
42+
os.Exit(1)
43+
}
44+
45+
out := filepath.Join(outDir, fmt.Sprintf("pre_params_%d.json", i))
46+
if err := os.WriteFile(out, data, 0644); err != nil {
47+
fmt.Fprintf(os.Stderr, "WriteFile: %v\n", err)
48+
os.Exit(1)
49+
}
50+
fmt.Printf(" wrote %s (%d bytes)\n", out, len(data))
51+
}
52+
53+
fmt.Println("Done – fixture files are ready.")
54+
}

e2e/fixtures/pre_params_0.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"PaillierSK":{"N":22784615960473574755733611260177717146434392605801746861539757174162362200383180584779483877150515610918628604543257909025949659878433028330527586427572538480156998857472717174847170658903922929897014407985674382430783028052252497818866589400073031810604657975531967494944030985395956564404378951049798421396873560886058239197295826390600264261532977059362687603884157735229472782735049116023180331775915388634698304523878173979663645585090598642588518726823686996501276155448813486109115775873261387431078213721448605368197751982836863303623640348563569462150276735237117118343870617329799006314849690156820843839913,"LambdaN":11392307980236787377866805630088858573217196302900873430769878587081181100191590292389741938575257805459314302271628954512974829939216514165263793213786269240078499428736358587423585329451961464948507203992837191215391514026126248909433294700036515905302328987765983747472015492697978282202189475524899210698285592156935541501801783237650323726417855608598238213255891833320967621379302688023131748846512541827748783103540177003011525019334700384037569237755578009708013315641209185549095348741263639039049458224775178707122886176423138558817645099285371766715827614656224232783510128842996729507994892767396727847914,"PhiN":22784615960473574755733611260177717146434392605801746861539757174162362200383180584779483877150515610918628604543257909025949659878433028330527586427572538480156998857472717174847170658903922929897014407985674382430783028052252497818866589400073031810604657975531967494944030985395956564404378951049798421396571184313871083003603566475300647452835711217196476426511783666641935242758605376046263497693025083655497566207080354006023050038669400768075138475511156019416026631282418371098190697482527278078098916449550357414245772352846277117635290198570743533431655229312448465567020257685993459015989785534793455695828,"P":142627801794191444058292894797094913766308431494348440004678563313022182254454747823009078732343483591646706922322565689122789507537331162323599655924304317397779388876591918943306987373523106743348360053833183800782132826401546871014802074256628801627302351469775297994464268383169694284904846912606118951087,"Q":159748770392964749633967020502521894930957410671862737367695505274515357721988992153907755350546821387554031394475254284517806038883866712189780595388226659687470135289803196067618091017211002609630937218065064153169846803589039314973548075736197127091319154454893354782386091260635853013955057709421269192999},"NTildei":22720943595136519791046495211328719598890516746393173450312554099060514764307457100583919135295641603337118243047992016279967787013079156815934897321626085664980716475337797145973557850918683366837065796476671623573909251388946036442191010755285144919981651888635229725523796791842163180333743491046826382505845071036421831981208823546269835517214758919944302320414616023268939820195847406003120128995549011191724886201492674310005247456236548987637832144818233632218582687983178710626681624989367657589843086775421382800527567783202017853680225696610754793591157453736392812357154233557545772698505632120741899540689,"H1i":4698567404863183724909195591368853231202847000854864664121849733593445158075280203573519573805358574122310817623986470241209915170456800229170144035335341244220812976902153463199993384527060534577403205222888645704877533258511913299281058181194816249141853637391136784516820291563437017482529737454335456323991132428990641014401187543319070428355011922904664926015676152584916541264499080890000144876558840393080877338679528999411829896169553365234905133332440741704895368176951929073728382159194459612766740491106887450237317450410565820506646627442038421114388127196570903058795366084573710567103513839768883262184,"H2i":5318244291902570046759404469566943965800377684178149150837550234059898877409986913935775989332640412927037569281572216216291064156155783451630531718218785865914245890821506905625097446150754137786212390003131540092150815061395673369975328115305069984638675908377776111828445691319426898131717402303352386220133438073380448300950917988915498823807346897523088956108471776121054777490289693836173688324417517673814481526053237961088942080717332881417748361032102169392698374026286773572949700335972570991066712290191823021477588469035308318997866340832347917025811608123328837069427914481040085404415682062284782961424,"Alpha":17957661812396380547077001761153939699264746886226015913163054723900179661471936153987097071340156842495601475428680218475876518103278599445128166339701625741256169684465398456640639610408237709374420013722883743071808032502673528783610348149450151385403169279362072411104323261670411180924697272811872127239961394488283689954731359246545480447358942241263324031039799052751173884516289667486084485446651383490838629162787605297234310111366467236225595300759708351607674520737108615628330310457233617130906638631668587774690566788692835813318580173093982142905587230368154040624294154671065674273093451167231042360791,"Beta":1589880201399433846468352598717764228167792578031172693028649814820698107439618612445497368218929902938032529459589327214529242319877692158427800531649420760361998688467712188631996058206027402531886408511530137565401938843450680489257291482517615457486152784576989660101908704220678218312271463021546472294743747125702506689273015109758504037897886676844931394708646055375724588611347396538550756891203763892416478042342051188348989273808769966315137067159043306106437698699980492973619985627360037073208850440576829848646943370914415697342767052841147526544446128538069592296808449515843408869751211446772431639443,"P":68284010317646769281627080923144487486965452940850848246175256021229194202855621165941481287802726580491534952892532617790503773160838692820353537852145483325231058943933442789493905253911906098266546673385010288438901313632921756088705895027645637122751486776756949008448610780571082412306371747724013870183,"Q":83185446671344309763882121135845230191442057061160728799513789679212818970032202297473770668897318644783166769720112764332896494480539277523438079471266211038767256366670785903652143306611523294363474280738350453138402549307011061547960350659126732876420678803907396325325806143354542072490996513724125339183}

e2e/fixtures/pre_params_1.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"PaillierSK":{"N":25334731400135976862061244412133759094636163782176048668546671134627854881227593434039428534025483579872773925098826060689828982908966986798354542172186154178441798959035235890486515073360062546249766470671570884694698796181906524949206136755552395937848083415104227017128361958849827501158212009486860301332853796648709519796341568128563582164924788624395970862450360919951130525877874626532041641364527155266502149080121171174639308551074843217016679020017749467990258292900468257307635025823406147036363306153161372718160984656228078180743947424239226302241952482878603956359337236800304859010026554808279374890201,"LambdaN":12667365700067988431030622206066879547318081891088024334273335567313927440613796717019714267012741789936386962549413030344914491454483493399177271086093077089220899479517617945243257536680031273124883235335785442347349398090953262474603068377776197968924041707552113508564180979424913750579106004743430150666267505945598299218480370744781741206925673647741661937341317546332890338238847194109780115695594659077230396830456611295124335854125600032496262806329800331702176655378459281132116355242252271604963471575863590591655919255576559836241068930514945298981162614710235887416532716637235927974965847016728134397402,"PhiN":25334731400135976862061244412133759094636163782176048668546671134627854881227593434039428534025483579872773925098826060689828982908966986798354542172186154178441798959035235890486515073360062546249766470671570884694698796181906524949206136755552395937848083415104227017128361958849827501158212009486860301332535011891196598436960741489563482413851347295483323874682635092665780676477694388219560231391189318154460793660913222590248671708251200064992525612659600663404353310756918562264232710484504543209926943151727181183311838511153119672482137861029890597962325229420471774833065433274471855949931694033456268794804,"P":150954428442134284649378560937298235445968008059661060998340321044408727173543695790936711458585215573016765449999270846636052384631197886978371146907095754488320629023202362440240457164724234906896231565227844470111637795849137539828632021969187836586500881150582786033576544863259361642196104090393276681319,"Q":167830329070787074731448078062801515627473320852985926769385506240941122226636542521544698514752621539024589969208677737754584458192445265045782260451053050097584353120347332603161858174177368919540131436206347064737508349225820968433177541240147867693126372307549395492695258662573641417898756684429829414079},"NTildei":23979337760263191931691290932658311417903219423507125064948885103305436105315281498686058327843645060874846265482890893840150407408373470201159901515923416708232992178892973091310759811512132509508504585542426459324088487462160467090622213942877329133281166129480000994201974111485877907294730516469879490353871936602900200049801710889198468867383187343155833543887858122141403655267053047921556824329002663072972265306564213797276226504471641568427063064008240949995268444220651998621911118676577140138634921375992345938867428915298298244924202020587025630414894515196975603484495632099012642943449596590057140705957,"H1i":15356654827701834260208004231914655997371068917772955771474039988285980956628639622180955210532437667614687364975022450792432571432360823454710039322567265415628984455237187998988201274129929586611677449509173785406896190541859661907530449825390483576586657533298440743049948733971594043144707398471922671344729470507493529873433175899825313769804623421229044420395663807805312494607710702172246680131630380369568036533710447633400913997165162031856291058500583317312690590802384287840571696924992483350999959346503198654049620434898635987491962643971941006907971241792807998103441625024826055883910628331773669436907,"H2i":23377264590078745794296409107134386939998788736335565374133028908858398331876861483632140272575279314597629098435297436949759892773319800290249854196221781637174083118093542175271508579957322262670648614614587898574491710373586914033381856346523511860071074297778768355899487719018993505426099651777261664047339717772138087184615488821067531918444408705177226860721083276380846355181546147113814864306390443448115970727984159122609509042022310005114272755047384583030030164948010861364964874245048600601608679894357956152042145989152073019250979241820835264883688414623354664999625748324260532666168125491920515166224,"Alpha":1111294508000961717721398428949770007780748238323194344641168158362423995434009565070528014301558366636855576211398227957679400746522669054264725487156101438043768957194202247441951847540656749158162136943600984032181259591377020403589126667995172491636491878331521029101698238846582813569432102890790362032080641794513766954752597686904010343117896922567923298573462008941668286422386770762612963975676951891786295860192228002102859688469794875105478623726770732067249300473718649519502662918519494407039809591431175676986830070701116113031543480213539460759870289484439714866565043101161192871044433108156734927999,"Beta":1424935595365569305491932451862737998041075168479787567085769768586630993482992061608366536887248349702122801016846894890858393639964450537950686526089674599860635488695123982400639280511259867711053760032149027398127518452952371562364094162860666358688127236674332975172670641529121400334261835756603119943761865245888540938729786487776314508309076724454856546182435547259958969447915464454791843422036366258021241984764242573355572389927628771113807101472802090658277036731365591638248875175198305958161007154666644670744212081853429907207477851014407732640371170926041008933509063799719245533630468965133167354320,"P":70728854612141785653042616658489933520441635979720790362091363805632872884329440449848810344242848858495236228776327370960042793346347297730352131905951872764629523404046514097283285496310265430415795580267952856759264823418599770992787158429635426639626702639511464483437373950155848939330486498337314249271,"Q":84757974279943801420327906424046241005180495895564185459646174208560429246858802171683902826162677641662428071370089124723324812268339286351533874493698395374658475482904144211933960001987418023251132636163169505498661454169032935115824555574928732593787077729994671722347687888294057406229477634132297865749}

e2e/keygen_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ func TestKeyGeneration(t *testing.T) {
4343
suite.RegisterPeers(t)
4444
t.Log("registerPeers completed")
4545

46+
suite.SeedPreParams(t)
47+
4648
t.Log("Starting startNodes...")
4749
suite.StartNodes(t)
4850
t.Log("startNodes completed")

e2e/reshare_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ func TestResharing(t *testing.T) {
3737
suite.SetupInfrastructure(t)
3838
suite.SetupTestNodes(t)
3939
suite.RegisterPeers(t)
40+
suite.SeedPreParams(t)
4041
suite.StartNodes(t)
4142
suite.SetupMPCClient(t)
4243
suite.LoadConfig()

e2e/sign_ckd_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ func TestCKDSigning(t *testing.T) {
5555
suite.SetupMPCClient(t)
5656
t.Log("setupMPCClient completed")
5757

58+
suite.SeedPreParams(t)
59+
5860
t.Log("Starting startNodes...")
5961
suite.StartNodes(t)
6062
t.Log("startNodes completed")

e2e/sign_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ func TestSigning(t *testing.T) {
9595
suite.SetupMPCClient(t)
9696
t.Log("setupMPCClient completed")
9797

98+
suite.SeedPreParams(t)
99+
98100
t.Log("Starting startNodes...")
99101
suite.StartNodes(t)
100102
t.Log("startNodes completed")

0 commit comments

Comments
 (0)