use unlock

This commit is contained in:
mmsqe 2025-05-18 21:31:51 +08:00
parent 4262099333
commit c733913cdf
No known key found for this signature in database
GPG key ID: 58B026FDE1D47518

View file

@ -71,10 +71,10 @@ func TestLag(t *testing.T) {
case *UnexpectedCodeError: case *UnexpectedCodeError:
fmt.Print(RED_X) fmt.Print(RED_X)
cancel() cancel()
t.Errorf("Worker %d failed on task %d with: %s", workerID, taskID, err.Error())
default: default:
fmt.Print(YELLOW_S, err) fmt.Print(YELLOW_S)
} }
t.Errorf("Worker %d failed on task %d with: %s", workerID, taskID, err.Error())
} else { } else {
fmt.Print(GREEN_DOT) fmt.Print(GREEN_DOT)
} }
@ -108,6 +108,30 @@ func (task *task) cleanup(t *testing.T) {
func (task *task) run(t *testing.T) (returnErr error) { func (task *task) run(t *testing.T) (returnErr error) {
datadir := t.TempDir() datadir := t.TempDir()
port := basePort + task.workerID*100 + task.taskID port := basePort + task.workerID*100 + task.taskID
password := "123456"
pwdFilePath := filepath.Join(datadir, "password.txt")
pwdFile, err := os.Create(pwdFilePath)
if err != nil {
return err
}
defer os.Remove(pwdFilePath)
if _, err := pwdFile.WriteString(password + "\n"); err != nil {
return err
}
pwdFile.Close()
ks := keystore.NewKeyStore(filepath.Join(datadir, "keystore"), keystore.LightScryptN, keystore.LightScryptP)
keyfileAcct, err := ks.NewAccount(password)
if err != nil {
return err
}
keyJson, err := os.ReadFile(keyfileAcct.URL.Path)
if err != nil {
return err
}
key, err := keystore.DecryptKey(keyJson, password)
if err != nil {
return err
}
args := []string{ args := []string{
"--datadir", "--datadir",
datadir, // passing in a `datadir` is required to reproduce datadir, // passing in a `datadir` is required to reproduce
@ -121,29 +145,10 @@ func (task *task) run(t *testing.T) (returnErr error) {
"admin,eth,web3,debug", "admin,eth,web3,debug",
"--ipcpath", "--ipcpath",
filepath.Join(datadir, "geth.ipc"), filepath.Join(datadir, "geth.ipc"),
"--unlock", keyfileAcct.Address.Hex(),
"--password", pwdFilePath,
} }
g := runGeth(t, args...) g := runGeth(t, args...)
keydir := filepath.Join(datadir, "keystore")
keyFiles, err := getFilesInKeystore(keydir)
if err != nil {
return err
}
if len(keyFiles) == 0 {
return errors.New("no key files found")
}
keyJson, err := os.ReadFile(keyFiles[0])
if err != nil {
return err
}
ks := keystore.NewKeyStore(keydir, keystore.LightScryptN, keystore.LightScryptP)
keyfileAcct := ks.Accounts()[0]
password := ""
key, err := keystore.DecryptKey(keyJson, password)
if err != nil {
return err
}
if !task.testGethRef.CompareAndSwap(nil, g) { if !task.testGethRef.CompareAndSwap(nil, g) {
// task cancelled // task cancelled
go g.Kill() go g.Kill()
@ -264,35 +269,6 @@ func (task *task) run(t *testing.T) (returnErr error) {
return nil return nil
} }
func getFilesInKeystore(keyFolder string) ([]string, error) {
var entries []os.DirEntry
var err error
maxRetries := 5
retryDelay := 500 * time.Millisecond
for i := 0; i < maxRetries; i++ {
entries, err = os.ReadDir(keyFolder)
if err == nil {
break
}
time.Sleep(retryDelay)
}
if err != nil {
return nil, err
}
var filePaths []string
for _, entry := range entries {
if !entry.IsDir() {
filePaths = append(filePaths, filepath.Join(keyFolder, entry.Name()))
}
}
return filePaths, nil
}
func waitForClient(port int, timeout time.Duration) (*ethclient.Client, error) { func waitForClient(port int, timeout time.Duration) (*ethclient.Client, error) {
endpoint := fmt.Sprintf("ws://127.0.0.1:%d", port) endpoint := fmt.Sprintf("ws://127.0.0.1:%d", port)
start := time.Now() start := time.Now()