Commit 1a2c0501 authored by vicotor's avatar vicotor

update worker register info

parent ac466097
...@@ -66,7 +66,7 @@ type Worker struct { ...@@ -66,7 +66,7 @@ type Worker struct {
info workerInfo info workerInfo
workerAddr string // worker address from public-key workerAddr string // worker address from public-key
deviceInfoHash []byte deviceInfoHash []byte
recentTask *lru.Cache recentTask *lru.ARCCache
status string status string
stream omanager.NodeManagerService_RegisterWorkerServer stream omanager.NodeManagerService_RegisterWorkerServer
...@@ -195,7 +195,7 @@ func (wm *WorkerManager) AddNewWorker(id int64, worker omanager.NodeManagerServi ...@@ -195,7 +195,7 @@ func (wm *WorkerManager) AddNewWorker(id int64, worker omanager.NodeManagerServi
stream: worker, stream: worker,
} }
taskCache, err := lru.New(100) taskCache, err := lru.NewARC(100)
if err != nil { if err != nil {
return nil, err return nil, err
} }
......
...@@ -37,8 +37,20 @@ func (w workerRegistry) DetailInfo() (json.RawMessage, error) { ...@@ -37,8 +37,20 @@ func (w workerRegistry) DetailInfo() (json.RawMessage, error) {
return nil, fmt.Errorf("worker address is empty") return nil, fmt.Errorf("worker address is empty")
} }
taskList := make([]string, 0)
keys := w.worker.recentTask.Keys()
for _, key := range keys {
if d, exist := w.worker.recentTask.Get(key); exist {
dtask := d.(*dispatchTask)
if dtask.status < TASK_FINISHED {
taskList = append(taskList, key.(string))
}
}
}
info := query.WorkerInfo{ info := query.WorkerInfo{
ActiveNM: make([]string, 0), ActiveNM: make([]string, 0),
TaskList: taskList,
} }
if w.worker.info.nodeInfo != nil { if w.worker.info.nodeInfo != nil {
info.BenefitAddress = w.worker.info.nodeInfo.BenefitAddress info.BenefitAddress = w.worker.info.nodeInfo.BenefitAddress
......
package utils package utils
import ( import (
"encoding/hex"
"fmt"
"github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/crypto"
"github.com/magiconair/properties/assert" "github.com/odysseus/service-registry/utils"
"testing" "testing"
) )
func TestCombineBytes(t *testing.T) { func TestCombineBytes(t *testing.T) {
hash := FromHex("0xaa81f776e43511492b9db11894c71e7fdca3f09bd24dc1fe93f1e017e6eef947") id := "9effda2d-f3ae-48e0-a54e-e88e84c6b804"
pubkey := FromHex("0423965c5d5b4c2fa03fe024cfbcd413db25e7c420b73bd5dccb78fada9e22d4848d32952c913ae0cdcc70efa38094dc49c05c6a0cec7e1712557050da7d7bd05a") idData := []byte(id)
signature := FromHex("db2be765e420d3b67e695612a349090e9fe2446c6b7875d36a0e6268bc3619e14d24b93a5d8f7f55b9649ad3f5a636a886c480fbe6fb5c49f3b716c0ea66ea7a01") reqHash := "7c180aec90bf54c27988885fd1c5d2e7d48b2db50e871f24e55f6f4a2f6b1380"
if len(signature) == 65 { redData, _ := hex.DecodeString(reqHash)
signature = signature[:64] datahash := "4b42042af97e612aafd03b2ac7e57be39118dece1f1333f6db364aaf944fcd9d"
} data, _ := hex.DecodeString(datahash)
if len(pubkey) > 65 {
pubkey = pubkey[:65] signanture := "78006ed3cef7b2d15c47b53958fdc305ed1fda3bd4e4638a9033aeb52c9837b524f69e922da7844f557b7be4757ee8c355ef15ba6b3e31e0fc40ed403d9f72ec00"
sigData, _ := hex.DecodeString(signanture)
dataHash := crypto.Keccak256Hash(utils.CombineBytes(idData, redData, data))
npubkey, err := crypto.SigToPub(dataHash[:], sigData)
if err != nil {
return
} }
verified := crypto.VerifySignature(pubkey, hash, signature) addr := crypto.PubkeyToAddress(*npubkey)
assert.Equal(t, verified, true) fmt.Println("addr:", addr)
//
//hash := FromHex("0xaa81f776e43511492b9db11894c71e7fdca3f09bd24dc1fe93f1e017e6eef947")
//pubkey := FromHex("0423965c5d5b4c2fa03fe024cfbcd413db25e7c420b73bd5dccb78fada9e22d4848d32952c913ae0cdcc70efa38094dc49c05c6a0cec7e1712557050da7d7bd05a")
//signature := FromHex("db2be765e420d3b67e695612a349090e9fe2446c6b7875d36a0e6268bc3619e14d24b93a5d8f7f55b9649ad3f5a636a886c480fbe6fb5c49f3b716c0ea66ea7a01")
//if len(signature) == 65 {
// signature = signature[:64]
//}
//if len(pubkey) > 65 {
// pubkey = pubkey[:65]
//}
//verified := crypto.VerifySignature(pubkey, hash, signature)
//assert.Equal(t, verified, true)
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment