mirror of
				https://github.com/kaspanet/kaspad.git
				synced 2025-10-14 00:59:33 +00:00 
			
		
		
		
	 d14809694f
			
		
	
	
		d14809694f
		
			
		
	
	
	
	
		
			
			* [NOD-1223] Delete unused files/packages. * [NOD-1223] Move signal and limits to the os package. * [NOD-1223] Put database and dbaccess into the db package. * [NOD-1223] Fold the logs package into the logger package. * [NOD-1223] Rename domainmessage to appmessage. * [NOD-1223] Rename to/from DomainMessage to AppMessage. * [NOD-1223] Move appmessage to the app packge. * [NOD-1223] Move protocol to the app packge. * [NOD-1223] Move the network package to the infrastructure packge. * [NOD-1223] Rename cmd to executables. * [NOD-1223] Fix go.doc in the logger package.
		
			
				
	
	
		
			128 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package integration
 | |
| 
 | |
| import (
 | |
| 	"path/filepath"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/kaspanet/kaspad/app"
 | |
| 	"github.com/kaspanet/kaspad/infrastructure/config"
 | |
| 	"github.com/kaspanet/kaspad/infrastructure/db/dbaccess"
 | |
| )
 | |
| 
 | |
| type appHarness struct {
 | |
| 	app                     *app.App
 | |
| 	rpcClient               *rpcClient
 | |
| 	p2pAddress              string
 | |
| 	rpcAddress              string
 | |
| 	miningAddress           string
 | |
| 	miningAddressPrivateKey string
 | |
| 	config                  *config.Config
 | |
| 	databaseContext         *dbaccess.DatabaseContext
 | |
| }
 | |
| 
 | |
| type harnessParams struct {
 | |
| 	p2pAddress              string
 | |
| 	rpcAddress              string
 | |
| 	miningAddress           string
 | |
| 	miningAddressPrivateKey string
 | |
| }
 | |
| 
 | |
| // setupHarness creates a single appHarness with given parameters
 | |
| func setupHarness(t *testing.T, params *harnessParams) (harness *appHarness, teardownFunc func()) {
 | |
| 	harness = &appHarness{
 | |
| 		p2pAddress:              params.p2pAddress,
 | |
| 		rpcAddress:              params.rpcAddress,
 | |
| 		miningAddress:           params.miningAddress,
 | |
| 		miningAddressPrivateKey: params.miningAddressPrivateKey,
 | |
| 	}
 | |
| 
 | |
| 	setConfig(t, harness)
 | |
| 	setDatabaseContext(t, harness)
 | |
| 	setApp(t, harness)
 | |
| 	harness.app.Start()
 | |
| 	setRPCClient(t, harness)
 | |
| 
 | |
| 	return harness, func() {
 | |
| 		teardownHarness(t, harness)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // setupHarnesses creates multiple appHarnesses, according to number of parameters passed
 | |
| func setupHarnesses(t *testing.T, harnessesParams []*harnessParams) (harnesses []*appHarness, teardownFunc func()) {
 | |
| 	var teardowns []func()
 | |
| 	for _, params := range harnessesParams {
 | |
| 		harness, teardownFunc := setupHarness(t, params)
 | |
| 		harnesses = append(harnesses, harness)
 | |
| 		teardowns = append(teardowns, teardownFunc)
 | |
| 	}
 | |
| 
 | |
| 	return harnesses, func() {
 | |
| 		for _, teardownFunc := range teardowns {
 | |
| 			teardownFunc()
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // standardSetup creates a standard setup of 3 appHarnesses that should work for most tests
 | |
| func standardSetup(t *testing.T) (appHarness1, appHarness2, appHarness3 *appHarness, teardownFunc func()) {
 | |
| 	harnesses, teardown := setupHarnesses(t, []*harnessParams{
 | |
| 		{
 | |
| 			p2pAddress:              p2pAddress1,
 | |
| 			rpcAddress:              rpcAddress1,
 | |
| 			miningAddress:           miningAddress1,
 | |
| 			miningAddressPrivateKey: miningAddress1PrivateKey,
 | |
| 		},
 | |
| 		{
 | |
| 			p2pAddress:              p2pAddress2,
 | |
| 			rpcAddress:              rpcAddress2,
 | |
| 			miningAddress:           miningAddress2,
 | |
| 			miningAddressPrivateKey: miningAddress2PrivateKey,
 | |
| 		}, {
 | |
| 			p2pAddress:              p2pAddress3,
 | |
| 			rpcAddress:              rpcAddress3,
 | |
| 			miningAddress:           miningAddress3,
 | |
| 			miningAddressPrivateKey: miningAddress3PrivateKey,
 | |
| 		},
 | |
| 	})
 | |
| 
 | |
| 	return harnesses[0], harnesses[1], harnesses[2], teardown
 | |
| }
 | |
| 
 | |
| func setRPCClient(t *testing.T, harness *appHarness) {
 | |
| 	var err error
 | |
| 	harness.rpcClient, err = newRPCClient(harness.rpcAddress)
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("Error getting RPC client %+v", err)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func teardownHarness(t *testing.T, harness *appHarness) {
 | |
| 	harness.app.Stop()
 | |
| 
 | |
| 	err := harness.databaseContext.Close()
 | |
| 	if err != nil {
 | |
| 		t.Errorf("Error closing database context: %+v", err)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func setApp(t *testing.T, harness *appHarness) {
 | |
| 	var err error
 | |
| 	harness.app, err = app.New(harness.config, harness.databaseContext, make(chan struct{}))
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("Error creating app: %+v", err)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func setDatabaseContext(t *testing.T, harness *appHarness) {
 | |
| 	var err error
 | |
| 	harness.databaseContext, err = openDB(harness.config)
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("Error openning database: %+v", err)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func openDB(cfg *config.Config) (*dbaccess.DatabaseContext, error) {
 | |
| 	dbPath := filepath.Join(cfg.DataDir, "db")
 | |
| 	return dbaccess.New(dbPath)
 | |
| }
 |