PoC: Network simulation framework (#1555)
* simv2: wip * simulation: exec adapter start/stop * simulation: add node status to exec adapter * simulation: initial simulation code * simulation: exec adapter, configure path to executable * simulation: initial docker adapter * simulation: wip kubernetes adapter * simulation: kubernetes adapter proxy * simulation: implement GetAll/StartAll/StopAll * simulation: kuberentes adapter - set env vars and resource limits * simulation: discovery test * simulation: remove port definitions within docker adapter * simulation: simplify wait for healthy loop * simulation: get nat ip addr from interface * simulation: pull docker images automatically * simulation: NodeStatus -> NodeInfo * simulation: move discovery test to example dir * simulation: example snapshot usage * simulation: add goclient specific simulation * simulation: add peer connections to snapshot * simulation: close rpc client * simulation: don't export kubernetes proxy server * simulation: merge simulation code * simulation: don't export nodemap * simulation: rename SimulationSnapshot -> Snapshot * simulation: linting fixes * simulation: add k8s available helper func * simulation: vendor * simulation: fix 'no non-test Go files' when building * simulation: remove errors from interface methods where non were returned * simulation: run getHealthInfo check in parallel
This commit is contained in:
1
simulation/examples/cluster/cluster.go
Normal file
1
simulation/examples/cluster/cluster.go
Normal file
@@ -0,0 +1 @@
|
||||
package cluster
|
132
simulation/examples/cluster/cluster_test.go
Normal file
132
simulation/examples/cluster/cluster_test.go
Normal file
@@ -0,0 +1,132 @@
|
||||
package cluster
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/ethereum/go-ethereum/log"
|
||||
"github.com/ethersphere/swarm/simulation"
|
||||
colorable "github.com/mattn/go-colorable"
|
||||
)
|
||||
|
||||
var (
|
||||
nodes = flag.Int("nodes", 20, "number of nodes to create")
|
||||
loglevel = flag.Int("loglevel", 3, "verbosity of logs")
|
||||
rawlog = flag.Bool("rawlog", false, "remove terminal formatting from logs")
|
||||
)
|
||||
|
||||
func init() {
|
||||
flag.Parse()
|
||||
log.PrintOrigins(true)
|
||||
log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(*loglevel), log.StreamHandler(colorable.NewColorableStderr(), log.TerminalFormat(!*rawlog))))
|
||||
}
|
||||
|
||||
func TestCluster(t *testing.T) {
|
||||
nodeCount := *nodes
|
||||
|
||||
// Test exec adapter
|
||||
t.Run("exec", func(t *testing.T) {
|
||||
execPath := "../../../build/bin/swarm"
|
||||
|
||||
if _, err := os.Stat(execPath); err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
t.Skip("swarm binary not found. build it before running the test")
|
||||
}
|
||||
}
|
||||
|
||||
tmpdir, err := ioutil.TempDir("", "test-sim-exec")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.RemoveAll(tmpdir)
|
||||
adapter, err := simulation.NewExecAdapter(simulation.ExecAdapterConfig{
|
||||
ExecutablePath: execPath,
|
||||
BaseDataDirectory: tmpdir,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("could not create exec adapter: %v", err)
|
||||
}
|
||||
startSimulation(t, adapter, nodeCount)
|
||||
})
|
||||
|
||||
// Test docker adapter
|
||||
t.Run("docker", func(t *testing.T) {
|
||||
config := simulation.DefaultDockerAdapterConfig()
|
||||
if !simulation.IsDockerAvailable(config.DaemonAddr) {
|
||||
t.Skip("docker is not available, skipping test")
|
||||
}
|
||||
config.DockerImage = "ethersphere/swarm:edge"
|
||||
adapter, err := simulation.NewDockerAdapter(config)
|
||||
if err != nil {
|
||||
t.Fatalf("could not create docker adapter: %v", err)
|
||||
}
|
||||
startSimulation(t, adapter, nodeCount)
|
||||
})
|
||||
|
||||
// Test kubernetes adapter
|
||||
t.Run("kubernetes", func(t *testing.T) {
|
||||
config := simulation.DefaultKubernetesAdapterConfig()
|
||||
if !simulation.IsKubernetesAvailable(config.KubeConfigPath) {
|
||||
t.Skip("kubernetes is not available, skipping test")
|
||||
}
|
||||
config.Namespace = "simulation-test"
|
||||
config.DockerImage = "ethersphere/swarm:edge"
|
||||
adapter, err := simulation.NewKubernetesAdapter(config)
|
||||
if err != nil {
|
||||
t.Fatalf("could not create kubernetes adapter: %v", err)
|
||||
}
|
||||
startSimulation(t, adapter, nodeCount)
|
||||
})
|
||||
}
|
||||
|
||||
func startSimulation(t *testing.T, adapter simulation.Adapter, count int) {
|
||||
sim := simulation.NewSimulation(adapter)
|
||||
|
||||
defer sim.StopAll()
|
||||
|
||||
// Common args used by all nodes
|
||||
commonArgs := []string{
|
||||
"--bzznetworkid", "599",
|
||||
}
|
||||
|
||||
// Start a cluster with 'count' nodes and a bootnode
|
||||
nodes, err := sim.CreateClusterWithBootnode("test", count, commonArgs)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// Wait for all nodes to be considered healthy
|
||||
err = sim.WaitForHealthyNetwork()
|
||||
if err != nil {
|
||||
t.Errorf("Failed to get healthy network: %v", err)
|
||||
}
|
||||
|
||||
// Check hive output on the first node
|
||||
client, err := sim.RPCClient(nodes[0].Info().ID)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to get rpc client: %v", err)
|
||||
}
|
||||
|
||||
var hive string
|
||||
err = client.Call(&hive, "bzz_hive")
|
||||
if err != nil {
|
||||
t.Errorf("could not get hive info: %v", err)
|
||||
}
|
||||
|
||||
snap, err := sim.Snapshot()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
b, err := json.Marshal(snap)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
fmt.Println(string(b))
|
||||
|
||||
fmt.Println(hive)
|
||||
}
|
641
simulation/examples/snapshot/docker.json
Normal file
641
simulation/examples/snapshot/docker.json
Normal file
@@ -0,0 +1,641 @@
|
||||
{
|
||||
"defaultAdapter": {
|
||||
"type": "docker",
|
||||
"config": {
|
||||
"image": "ethersphere/swarm:edge",
|
||||
"daemonAddr": "unix:///var/run/docker.sock"
|
||||
}
|
||||
},
|
||||
"nodes": [
|
||||
{
|
||||
"config": {
|
||||
"id": "test-1",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"675a1c7dbaa5ea1bbddd46ee1a06e55929175760c5824bb5a6992d0b96f84e9d",
|
||||
"--nodekeyhex",
|
||||
"1de361ad2978679213635f7f11e35dbd55a34979c931734ff9c3760cb5a3e6ad",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-11",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"9c7f8bfdcfcc129baf677585703e6061189f9076e354d27f4b7f663e37fdc92b",
|
||||
"--nodekeyhex",
|
||||
"a8f2e98633c85a0b3a89facafbd35cb5d10c556bdf142daab63fb554a53715ec",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-2",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"f60e0733d0cf9ae1e77bccd3256e709d9e552848d5ae19b1536beeac7157c514",
|
||||
"--nodekeyhex",
|
||||
"51135dc28378604cb7d7113f22114ac68f0dc235332649ac688fb1d13b622e3f",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-15",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"5dfd72d5b92dabde0e58a4e6289be7c1e738c40dac8fafd151e56974f739a8f9",
|
||||
"--nodekeyhex",
|
||||
"70893f8a2c3fe1a24dcfb202a81e33dce03c3ded913d8fda92e6eb51c737e8de",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-10",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"bbd17f109585e6df0a92953985059b791a7be2d01a973743a5e0100b7ab06715",
|
||||
"--nodekeyhex",
|
||||
"8592bf30d3a88dff49bdf57d583e0b235475151a958e6bf285520767ab7e7104",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-18",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"2315b8bc42c2ba56ed4f88ec2a60a4b02bf3f8e94f2faac8dd4d642502c2056a",
|
||||
"--nodekeyhex",
|
||||
"975466b3530c2bf5940219d43525eadf5385df9f2defc1fa16b10d141f272b49",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-7",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"494bceb4a9e564b1da2f00f5b6ff872dbfcfcbee4655e704e85ebfdd86bf29e5",
|
||||
"--nodekeyhex",
|
||||
"c677fdca73661ef5dc3b7773bbc52f7444b5ac9913230b7084a84f1a5f10b2cc",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-12",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"dde10d9d208b0f70951e96941db0d9b245175f43ab5485cf0c8811d12f9b9cdb",
|
||||
"--nodekeyhex",
|
||||
"747ed88c92cdd8bf77aa0b09528038f457657ffb97e460895a7284b796da9dd4",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-9",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"10b0fff107a590a424e5e74abdd119406ed096b7e600cbe04ff67584f9d55c51",
|
||||
"--nodekeyhex",
|
||||
"7ce5b908dfe70f5103948c413debc0fa03f50a6426b51da158438922abf3ea10",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-4",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"3b0f49376815b1952f3c73fe6fd01a93e48d4bfac5f871c4712e092181549d91",
|
||||
"--nodekeyhex",
|
||||
"7bfe1dd5c1bbe83d9e29828e58e8cf9a431584a7d34c7bfb795a027a4adced8a",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-16",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"46ed3a44c6fa46d4a6368b3d915134b185986ac7627a70b970f787c8896d6c6a",
|
||||
"--nodekeyhex",
|
||||
"e48066d163683429380f8b48fea282e25a184c9a50a5dbf24d85186469ca795c",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-19",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"9314b3cc4d2cfa01fd044df334ec840f999f0ebb11f7a8a184786cef17703fc2",
|
||||
"--nodekeyhex",
|
||||
"4775f2c8a3cec55208c14d0a9b7fcdaf2447513142e69e03a3e8e2a759de0b55",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-14",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"c54019ce7e3692db5f7d3531c6c00c96b9b744acf520ebd124194a5789c732d9",
|
||||
"--nodekeyhex",
|
||||
"94b5c4e9fd4496bdc3f1bd673cca9cbb2f4afe354a8d6ebb50d198798f0f4a45",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-13",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"c7f8d404fee2b04242534a3486b1cf031ce6af150a075ba943d50bf1968dd85a",
|
||||
"--nodekeyhex",
|
||||
"24ae9cdc2ceea666fc588586b0e062721744562495e064fccb0ada19481f133d",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-17",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"d48f7cb8ac5be805e700f1575cb644ea5cf05413dbdd9f969c43d1d54a9df29e",
|
||||
"--nodekeyhex",
|
||||
"8f85b38e6c6034d7c3c23d1391aaeae3eb3d680803b199cb716388de5fde3cf5",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-8",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"ac7c28909be33eab4fccf5f39e808dd0a96ae412a3e7fe52f040ebb4d4d4d6f0",
|
||||
"--nodekeyhex",
|
||||
"bbef6fca5bc85f91d6315626fab3fdecdad8abfa3f38b216f98ee92489625a7c",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-5",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"1a16fab4e3cbbc217db7dcb1bddb0ef12dd28c48c8a50bd4bb5550beaa80c7a0",
|
||||
"--nodekeyhex",
|
||||
"19234026cedfdfb10cf682f6491ff4c876411804949ac1b0dd5f1faee66f0bf3",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-3",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"6410c2eadadac52be6a261a0e72060e5488f9165b24cc4c1764ad7a5ef6c0532",
|
||||
"--nodekeyhex",
|
||||
"6a3997bc8a3884797f18c8e4e345470db695d827a923975e5ce4dfb3c5d09d1e",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-0",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"118ecf1dd2ebd700975af6de7dff806a3fcd41bc82987db96c45264694ec4276",
|
||||
"--nodekeyhex",
|
||||
"3422448fa8b3e6e41ea51a84262917d38d54e2c4345ec95d0586d741d31f91b5",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"id": "test-6",
|
||||
"args": [
|
||||
"--bzzkeyhex",
|
||||
"66fa75cc080f0b5115c165004310378e98bb90cd652d4f9d92c71c489995942f",
|
||||
"--nodekeyhex",
|
||||
"e1a6f1bb9ed90cfa534dc8abb5088afa010acd7585837b3a8ea19c31c38da068",
|
||||
"--bzznetworkid",
|
||||
"599"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"connections": [
|
||||
{
|
||||
"from": "enode://b270650132ec89eda0e0addac435d1074007818291cc25510d332752f81901d161777e80e138f5b25028660e9af05983f77bc240aa7628a4cf487131910c64b3",
|
||||
"to": "enode://c9902d1a77c0d51adf2b94c6d14f7dd10ad732b18986a221464563758b9b9a04fe159b75cdbf777196b5f90e75f0f04513e018a2f7622e4fcadd45a6b9e2cc9a"
|
||||
},
|
||||
{
|
||||
"from": "enode://b270650132ec89eda0e0addac435d1074007818291cc25510d332752f81901d161777e80e138f5b25028660e9af05983f77bc240aa7628a4cf487131910c64b3",
|
||||
"to": "enode://5b94644c474fef835f68bca9460b79daa0d44101b581f159ca4de594f4e4d4b7f701f97fb5713267bd89b22df351ead20a1587dd604d5c6f1c3ebddf3f7f48c4"
|
||||
},
|
||||
{
|
||||
"from": "enode://b270650132ec89eda0e0addac435d1074007818291cc25510d332752f81901d161777e80e138f5b25028660e9af05983f77bc240aa7628a4cf487131910c64b3",
|
||||
"to": "enode://e76225bd1dc9ee34b2e551f82646f7a6f2f74bbd8a5f5bb048b9057e34696813b2ceddd3c75069b50c506c15bbc9b7153410e73e0637390a6550c29dea3995aa"
|
||||
},
|
||||
{
|
||||
"from": "enode://b270650132ec89eda0e0addac435d1074007818291cc25510d332752f81901d161777e80e138f5b25028660e9af05983f77bc240aa7628a4cf487131910c64b3",
|
||||
"to": "enode://6419bc38b529be4c7ce7065783eeac741f20fbe8138f6cb0a12b2928e64cefda8c7c1ab6657e59a2c7d68ab9170e25e7e83a34d4fbd5231727c7f5bde800fc54"
|
||||
},
|
||||
{
|
||||
"from": "enode://41a6567457b90fb8e9856575deaaaa90c344dda1897275bff680d56018d4dcdc8330a85aecc9a5d4f69f9b145f047e0d1fcda4d78647534b32167e983129e091",
|
||||
"to": "enode://13b19a04feca4ebb50813019ef145d4622c650ae2cdc2cba0b00758b2f4bc2d6629a646d3a49eddae17b8e818fe41c558f1746bb1b713c3acad880c537c87ca2"
|
||||
},
|
||||
{
|
||||
"from": "enode://41a6567457b90fb8e9856575deaaaa90c344dda1897275bff680d56018d4dcdc8330a85aecc9a5d4f69f9b145f047e0d1fcda4d78647534b32167e983129e091",
|
||||
"to": "enode://f5c8f1ab0be7d77364cf7da43297abcc19cb8fbf66458ab78236235b362093c34d68bd0cf22c9a900a1b15398515edbb42663dafdaee8d69d91d40e8e58f69c8"
|
||||
},
|
||||
{
|
||||
"from": "enode://41a6567457b90fb8e9856575deaaaa90c344dda1897275bff680d56018d4dcdc8330a85aecc9a5d4f69f9b145f047e0d1fcda4d78647534b32167e983129e091",
|
||||
"to": "enode://d8cc415f199cba179af255ac6effc72afec5aee0c7754ae0a00ee8f91a6be4affc3aa75a75bba4ab75fb07aa7e2b50eeb0ca785c7066d1d23fd772deeefbd3aa"
|
||||
},
|
||||
{
|
||||
"from": "enode://41a6567457b90fb8e9856575deaaaa90c344dda1897275bff680d56018d4dcdc8330a85aecc9a5d4f69f9b145f047e0d1fcda4d78647534b32167e983129e091",
|
||||
"to": "enode://520b57f167660f2b4004866b848fe1015d8b5d7d98dff0207a7e4925478c937eaa1d0e07994be75d5023d18f6fc7633562d0f69b320835726d3c24645140b715"
|
||||
},
|
||||
{
|
||||
"from": "enode://41a6567457b90fb8e9856575deaaaa90c344dda1897275bff680d56018d4dcdc8330a85aecc9a5d4f69f9b145f047e0d1fcda4d78647534b32167e983129e091",
|
||||
"to": "enode://f17f5ce80833211c6a93762f2ee55bf97115dd3f7b743b2ab7e9c3d7962defca70f3b5e4a8b96fa46d5a33f4319140cf2ff0ab85939a62d4cbf1b69c65d53946"
|
||||
},
|
||||
{
|
||||
"from": "enode://41a6567457b90fb8e9856575deaaaa90c344dda1897275bff680d56018d4dcdc8330a85aecc9a5d4f69f9b145f047e0d1fcda4d78647534b32167e983129e091",
|
||||
"to": "enode://7c9adbfec6f76c7efb599db2300aded9a35efc616f3f4aeb1a20dc54eb4d238ed48c3b79273eff264578bd2a1fc583afd8254841c246c55dfe7fe851986fa77d"
|
||||
},
|
||||
{
|
||||
"from": "enode://41a6567457b90fb8e9856575deaaaa90c344dda1897275bff680d56018d4dcdc8330a85aecc9a5d4f69f9b145f047e0d1fcda4d78647534b32167e983129e091",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://520b57f167660f2b4004866b848fe1015d8b5d7d98dff0207a7e4925478c937eaa1d0e07994be75d5023d18f6fc7633562d0f69b320835726d3c24645140b715",
|
||||
"to": "enode://2db289c17757f863d2d833a4d6641cd1a096dd0d392e356e3c4b6fed73382f9451b1fb23ff25f8c99e76bdb587428358817ab4969d358b24a126fa59c8bd98af"
|
||||
},
|
||||
{
|
||||
"from": "enode://520b57f167660f2b4004866b848fe1015d8b5d7d98dff0207a7e4925478c937eaa1d0e07994be75d5023d18f6fc7633562d0f69b320835726d3c24645140b715",
|
||||
"to": "enode://c9902d1a77c0d51adf2b94c6d14f7dd10ad732b18986a221464563758b9b9a04fe159b75cdbf777196b5f90e75f0f04513e018a2f7622e4fcadd45a6b9e2cc9a"
|
||||
},
|
||||
{
|
||||
"from": "enode://520b57f167660f2b4004866b848fe1015d8b5d7d98dff0207a7e4925478c937eaa1d0e07994be75d5023d18f6fc7633562d0f69b320835726d3c24645140b715",
|
||||
"to": "enode://d8cc415f199cba179af255ac6effc72afec5aee0c7754ae0a00ee8f91a6be4affc3aa75a75bba4ab75fb07aa7e2b50eeb0ca785c7066d1d23fd772deeefbd3aa"
|
||||
},
|
||||
{
|
||||
"from": "enode://520b57f167660f2b4004866b848fe1015d8b5d7d98dff0207a7e4925478c937eaa1d0e07994be75d5023d18f6fc7633562d0f69b320835726d3c24645140b715",
|
||||
"to": "enode://f17f5ce80833211c6a93762f2ee55bf97115dd3f7b743b2ab7e9c3d7962defca70f3b5e4a8b96fa46d5a33f4319140cf2ff0ab85939a62d4cbf1b69c65d53946"
|
||||
},
|
||||
{
|
||||
"from": "enode://520b57f167660f2b4004866b848fe1015d8b5d7d98dff0207a7e4925478c937eaa1d0e07994be75d5023d18f6fc7633562d0f69b320835726d3c24645140b715",
|
||||
"to": "enode://7c9adbfec6f76c7efb599db2300aded9a35efc616f3f4aeb1a20dc54eb4d238ed48c3b79273eff264578bd2a1fc583afd8254841c246c55dfe7fe851986fa77d"
|
||||
},
|
||||
{
|
||||
"from": "enode://520b57f167660f2b4004866b848fe1015d8b5d7d98dff0207a7e4925478c937eaa1d0e07994be75d5023d18f6fc7633562d0f69b320835726d3c24645140b715",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://7f3385e72e489ff1b8f17f65af808348708d80df56d8a797fe9c8369128ecac6c8b2a58537f5d8987ea57a2779b3038b2a2fa3428eda55d5e0d6f4fc2f5c717f",
|
||||
"to": "enode://7eb662ba026270024a625d9df71b5a466f61a303dff47ae61cccc3d18550ecc2731f2ea2d768f121da4e7cd7fc4f9ad30ab278e981a2e9c2a0d7d6ee0430cfe2"
|
||||
},
|
||||
{
|
||||
"from": "enode://7f3385e72e489ff1b8f17f65af808348708d80df56d8a797fe9c8369128ecac6c8b2a58537f5d8987ea57a2779b3038b2a2fa3428eda55d5e0d6f4fc2f5c717f",
|
||||
"to": "enode://b270650132ec89eda0e0addac435d1074007818291cc25510d332752f81901d161777e80e138f5b25028660e9af05983f77bc240aa7628a4cf487131910c64b3"
|
||||
},
|
||||
{
|
||||
"from": "enode://7f3385e72e489ff1b8f17f65af808348708d80df56d8a797fe9c8369128ecac6c8b2a58537f5d8987ea57a2779b3038b2a2fa3428eda55d5e0d6f4fc2f5c717f",
|
||||
"to": "enode://9b246088fd8224ce44a106068a6aa4ca1e17433443babe41905e3d07d89df4685359de20c6115ff253e3a38d0ed0954c50afe60cdf970930d05037313db17afd"
|
||||
},
|
||||
{
|
||||
"from": "enode://7f3385e72e489ff1b8f17f65af808348708d80df56d8a797fe9c8369128ecac6c8b2a58537f5d8987ea57a2779b3038b2a2fa3428eda55d5e0d6f4fc2f5c717f",
|
||||
"to": "enode://c9902d1a77c0d51adf2b94c6d14f7dd10ad732b18986a221464563758b9b9a04fe159b75cdbf777196b5f90e75f0f04513e018a2f7622e4fcadd45a6b9e2cc9a"
|
||||
},
|
||||
{
|
||||
"from": "enode://7f3385e72e489ff1b8f17f65af808348708d80df56d8a797fe9c8369128ecac6c8b2a58537f5d8987ea57a2779b3038b2a2fa3428eda55d5e0d6f4fc2f5c717f",
|
||||
"to": "enode://5b94644c474fef835f68bca9460b79daa0d44101b581f159ca4de594f4e4d4b7f701f97fb5713267bd89b22df351ead20a1587dd604d5c6f1c3ebddf3f7f48c4"
|
||||
},
|
||||
{
|
||||
"from": "enode://7f3385e72e489ff1b8f17f65af808348708d80df56d8a797fe9c8369128ecac6c8b2a58537f5d8987ea57a2779b3038b2a2fa3428eda55d5e0d6f4fc2f5c717f",
|
||||
"to": "enode://cd29456310d3526660cf3895bceeac648dc02ed5496f4c0e2f7332c4faf1a006d1b89fcf1d3761b3d343dc8cde605b598ddab8c1b7f003ad44d05b2f90c680e2"
|
||||
},
|
||||
{
|
||||
"from": "enode://7f3385e72e489ff1b8f17f65af808348708d80df56d8a797fe9c8369128ecac6c8b2a58537f5d8987ea57a2779b3038b2a2fa3428eda55d5e0d6f4fc2f5c717f",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://6419bc38b529be4c7ce7065783eeac741f20fbe8138f6cb0a12b2928e64cefda8c7c1ab6657e59a2c7d68ab9170e25e7e83a34d4fbd5231727c7f5bde800fc54",
|
||||
"to": "enode://c9902d1a77c0d51adf2b94c6d14f7dd10ad732b18986a221464563758b9b9a04fe159b75cdbf777196b5f90e75f0f04513e018a2f7622e4fcadd45a6b9e2cc9a"
|
||||
},
|
||||
{
|
||||
"from": "enode://6419bc38b529be4c7ce7065783eeac741f20fbe8138f6cb0a12b2928e64cefda8c7c1ab6657e59a2c7d68ab9170e25e7e83a34d4fbd5231727c7f5bde800fc54",
|
||||
"to": "enode://5b94644c474fef835f68bca9460b79daa0d44101b581f159ca4de594f4e4d4b7f701f97fb5713267bd89b22df351ead20a1587dd604d5c6f1c3ebddf3f7f48c4"
|
||||
},
|
||||
{
|
||||
"from": "enode://6419bc38b529be4c7ce7065783eeac741f20fbe8138f6cb0a12b2928e64cefda8c7c1ab6657e59a2c7d68ab9170e25e7e83a34d4fbd5231727c7f5bde800fc54",
|
||||
"to": "enode://cd29456310d3526660cf3895bceeac648dc02ed5496f4c0e2f7332c4faf1a006d1b89fcf1d3761b3d343dc8cde605b598ddab8c1b7f003ad44d05b2f90c680e2"
|
||||
},
|
||||
{
|
||||
"from": "enode://6419bc38b529be4c7ce7065783eeac741f20fbe8138f6cb0a12b2928e64cefda8c7c1ab6657e59a2c7d68ab9170e25e7e83a34d4fbd5231727c7f5bde800fc54",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://e76225bd1dc9ee34b2e551f82646f7a6f2f74bbd8a5f5bb048b9057e34696813b2ceddd3c75069b50c506c15bbc9b7153410e73e0637390a6550c29dea3995aa",
|
||||
"to": "enode://13b19a04feca4ebb50813019ef145d4622c650ae2cdc2cba0b00758b2f4bc2d6629a646d3a49eddae17b8e818fe41c558f1746bb1b713c3acad880c537c87ca2"
|
||||
},
|
||||
{
|
||||
"from": "enode://e76225bd1dc9ee34b2e551f82646f7a6f2f74bbd8a5f5bb048b9057e34696813b2ceddd3c75069b50c506c15bbc9b7153410e73e0637390a6550c29dea3995aa",
|
||||
"to": "enode://5b94644c474fef835f68bca9460b79daa0d44101b581f159ca4de594f4e4d4b7f701f97fb5713267bd89b22df351ead20a1587dd604d5c6f1c3ebddf3f7f48c4"
|
||||
},
|
||||
{
|
||||
"from": "enode://e76225bd1dc9ee34b2e551f82646f7a6f2f74bbd8a5f5bb048b9057e34696813b2ceddd3c75069b50c506c15bbc9b7153410e73e0637390a6550c29dea3995aa",
|
||||
"to": "enode://6419bc38b529be4c7ce7065783eeac741f20fbe8138f6cb0a12b2928e64cefda8c7c1ab6657e59a2c7d68ab9170e25e7e83a34d4fbd5231727c7f5bde800fc54"
|
||||
},
|
||||
{
|
||||
"from": "enode://e76225bd1dc9ee34b2e551f82646f7a6f2f74bbd8a5f5bb048b9057e34696813b2ceddd3c75069b50c506c15bbc9b7153410e73e0637390a6550c29dea3995aa",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://f5c8f1ab0be7d77364cf7da43297abcc19cb8fbf66458ab78236235b362093c34d68bd0cf22c9a900a1b15398515edbb42663dafdaee8d69d91d40e8e58f69c8",
|
||||
"to": "enode://13b19a04feca4ebb50813019ef145d4622c650ae2cdc2cba0b00758b2f4bc2d6629a646d3a49eddae17b8e818fe41c558f1746bb1b713c3acad880c537c87ca2"
|
||||
},
|
||||
{
|
||||
"from": "enode://f5c8f1ab0be7d77364cf7da43297abcc19cb8fbf66458ab78236235b362093c34d68bd0cf22c9a900a1b15398515edbb42663dafdaee8d69d91d40e8e58f69c8",
|
||||
"to": "enode://d8cc415f199cba179af255ac6effc72afec5aee0c7754ae0a00ee8f91a6be4affc3aa75a75bba4ab75fb07aa7e2b50eeb0ca785c7066d1d23fd772deeefbd3aa"
|
||||
},
|
||||
{
|
||||
"from": "enode://f5c8f1ab0be7d77364cf7da43297abcc19cb8fbf66458ab78236235b362093c34d68bd0cf22c9a900a1b15398515edbb42663dafdaee8d69d91d40e8e58f69c8",
|
||||
"to": "enode://520b57f167660f2b4004866b848fe1015d8b5d7d98dff0207a7e4925478c937eaa1d0e07994be75d5023d18f6fc7633562d0f69b320835726d3c24645140b715"
|
||||
},
|
||||
{
|
||||
"from": "enode://f5c8f1ab0be7d77364cf7da43297abcc19cb8fbf66458ab78236235b362093c34d68bd0cf22c9a900a1b15398515edbb42663dafdaee8d69d91d40e8e58f69c8",
|
||||
"to": "enode://f17f5ce80833211c6a93762f2ee55bf97115dd3f7b743b2ab7e9c3d7962defca70f3b5e4a8b96fa46d5a33f4319140cf2ff0ab85939a62d4cbf1b69c65d53946"
|
||||
},
|
||||
{
|
||||
"from": "enode://f5c8f1ab0be7d77364cf7da43297abcc19cb8fbf66458ab78236235b362093c34d68bd0cf22c9a900a1b15398515edbb42663dafdaee8d69d91d40e8e58f69c8",
|
||||
"to": "enode://7c9adbfec6f76c7efb599db2300aded9a35efc616f3f4aeb1a20dc54eb4d238ed48c3b79273eff264578bd2a1fc583afd8254841c246c55dfe7fe851986fa77d"
|
||||
},
|
||||
{
|
||||
"from": "enode://f5c8f1ab0be7d77364cf7da43297abcc19cb8fbf66458ab78236235b362093c34d68bd0cf22c9a900a1b15398515edbb42663dafdaee8d69d91d40e8e58f69c8",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://f17f5ce80833211c6a93762f2ee55bf97115dd3f7b743b2ab7e9c3d7962defca70f3b5e4a8b96fa46d5a33f4319140cf2ff0ab85939a62d4cbf1b69c65d53946",
|
||||
"to": "enode://13b19a04feca4ebb50813019ef145d4622c650ae2cdc2cba0b00758b2f4bc2d6629a646d3a49eddae17b8e818fe41c558f1746bb1b713c3acad880c537c87ca2"
|
||||
},
|
||||
{
|
||||
"from": "enode://f17f5ce80833211c6a93762f2ee55bf97115dd3f7b743b2ab7e9c3d7962defca70f3b5e4a8b96fa46d5a33f4319140cf2ff0ab85939a62d4cbf1b69c65d53946",
|
||||
"to": "enode://d8cc415f199cba179af255ac6effc72afec5aee0c7754ae0a00ee8f91a6be4affc3aa75a75bba4ab75fb07aa7e2b50eeb0ca785c7066d1d23fd772deeefbd3aa"
|
||||
},
|
||||
{
|
||||
"from": "enode://f17f5ce80833211c6a93762f2ee55bf97115dd3f7b743b2ab7e9c3d7962defca70f3b5e4a8b96fa46d5a33f4319140cf2ff0ab85939a62d4cbf1b69c65d53946",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://7eb662ba026270024a625d9df71b5a466f61a303dff47ae61cccc3d18550ecc2731f2ea2d768f121da4e7cd7fc4f9ad30ab278e981a2e9c2a0d7d6ee0430cfe2",
|
||||
"to": "enode://13b19a04feca4ebb50813019ef145d4622c650ae2cdc2cba0b00758b2f4bc2d6629a646d3a49eddae17b8e818fe41c558f1746bb1b713c3acad880c537c87ca2"
|
||||
},
|
||||
{
|
||||
"from": "enode://7eb662ba026270024a625d9df71b5a466f61a303dff47ae61cccc3d18550ecc2731f2ea2d768f121da4e7cd7fc4f9ad30ab278e981a2e9c2a0d7d6ee0430cfe2",
|
||||
"to": "enode://d8cc415f199cba179af255ac6effc72afec5aee0c7754ae0a00ee8f91a6be4affc3aa75a75bba4ab75fb07aa7e2b50eeb0ca785c7066d1d23fd772deeefbd3aa"
|
||||
},
|
||||
{
|
||||
"from": "enode://7eb662ba026270024a625d9df71b5a466f61a303dff47ae61cccc3d18550ecc2731f2ea2d768f121da4e7cd7fc4f9ad30ab278e981a2e9c2a0d7d6ee0430cfe2",
|
||||
"to": "enode://e76225bd1dc9ee34b2e551f82646f7a6f2f74bbd8a5f5bb048b9057e34696813b2ceddd3c75069b50c506c15bbc9b7153410e73e0637390a6550c29dea3995aa"
|
||||
},
|
||||
{
|
||||
"from": "enode://7eb662ba026270024a625d9df71b5a466f61a303dff47ae61cccc3d18550ecc2731f2ea2d768f121da4e7cd7fc4f9ad30ab278e981a2e9c2a0d7d6ee0430cfe2",
|
||||
"to": "enode://cd29456310d3526660cf3895bceeac648dc02ed5496f4c0e2f7332c4faf1a006d1b89fcf1d3761b3d343dc8cde605b598ddab8c1b7f003ad44d05b2f90c680e2"
|
||||
},
|
||||
{
|
||||
"from": "enode://7eb662ba026270024a625d9df71b5a466f61a303dff47ae61cccc3d18550ecc2731f2ea2d768f121da4e7cd7fc4f9ad30ab278e981a2e9c2a0d7d6ee0430cfe2",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd",
|
||||
"to": "enode://13b19a04feca4ebb50813019ef145d4622c650ae2cdc2cba0b00758b2f4bc2d6629a646d3a49eddae17b8e818fe41c558f1746bb1b713c3acad880c537c87ca2"
|
||||
},
|
||||
{
|
||||
"from": "enode://9947aaf751f83384eada5a358c679a322e26c79051097eea44164c9d5d6da2c9984b61d865a777b250fabcb1cf31a835045cf132fadb43e067641914c2991265",
|
||||
"to": "enode://13b19a04feca4ebb50813019ef145d4622c650ae2cdc2cba0b00758b2f4bc2d6629a646d3a49eddae17b8e818fe41c558f1746bb1b713c3acad880c537c87ca2"
|
||||
},
|
||||
{
|
||||
"from": "enode://9947aaf751f83384eada5a358c679a322e26c79051097eea44164c9d5d6da2c9984b61d865a777b250fabcb1cf31a835045cf132fadb43e067641914c2991265",
|
||||
"to": "enode://f5c8f1ab0be7d77364cf7da43297abcc19cb8fbf66458ab78236235b362093c34d68bd0cf22c9a900a1b15398515edbb42663dafdaee8d69d91d40e8e58f69c8"
|
||||
},
|
||||
{
|
||||
"from": "enode://9947aaf751f83384eada5a358c679a322e26c79051097eea44164c9d5d6da2c9984b61d865a777b250fabcb1cf31a835045cf132fadb43e067641914c2991265",
|
||||
"to": "enode://d8cc415f199cba179af255ac6effc72afec5aee0c7754ae0a00ee8f91a6be4affc3aa75a75bba4ab75fb07aa7e2b50eeb0ca785c7066d1d23fd772deeefbd3aa"
|
||||
},
|
||||
{
|
||||
"from": "enode://9947aaf751f83384eada5a358c679a322e26c79051097eea44164c9d5d6da2c9984b61d865a777b250fabcb1cf31a835045cf132fadb43e067641914c2991265",
|
||||
"to": "enode://520b57f167660f2b4004866b848fe1015d8b5d7d98dff0207a7e4925478c937eaa1d0e07994be75d5023d18f6fc7633562d0f69b320835726d3c24645140b715"
|
||||
},
|
||||
{
|
||||
"from": "enode://9947aaf751f83384eada5a358c679a322e26c79051097eea44164c9d5d6da2c9984b61d865a777b250fabcb1cf31a835045cf132fadb43e067641914c2991265",
|
||||
"to": "enode://41a6567457b90fb8e9856575deaaaa90c344dda1897275bff680d56018d4dcdc8330a85aecc9a5d4f69f9b145f047e0d1fcda4d78647534b32167e983129e091"
|
||||
},
|
||||
{
|
||||
"from": "enode://9947aaf751f83384eada5a358c679a322e26c79051097eea44164c9d5d6da2c9984b61d865a777b250fabcb1cf31a835045cf132fadb43e067641914c2991265",
|
||||
"to": "enode://f17f5ce80833211c6a93762f2ee55bf97115dd3f7b743b2ab7e9c3d7962defca70f3b5e4a8b96fa46d5a33f4319140cf2ff0ab85939a62d4cbf1b69c65d53946"
|
||||
},
|
||||
{
|
||||
"from": "enode://9947aaf751f83384eada5a358c679a322e26c79051097eea44164c9d5d6da2c9984b61d865a777b250fabcb1cf31a835045cf132fadb43e067641914c2991265",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://d8cc415f199cba179af255ac6effc72afec5aee0c7754ae0a00ee8f91a6be4affc3aa75a75bba4ab75fb07aa7e2b50eeb0ca785c7066d1d23fd772deeefbd3aa",
|
||||
"to": "enode://b270650132ec89eda0e0addac435d1074007818291cc25510d332752f81901d161777e80e138f5b25028660e9af05983f77bc240aa7628a4cf487131910c64b3"
|
||||
},
|
||||
{
|
||||
"from": "enode://d8cc415f199cba179af255ac6effc72afec5aee0c7754ae0a00ee8f91a6be4affc3aa75a75bba4ab75fb07aa7e2b50eeb0ca785c7066d1d23fd772deeefbd3aa",
|
||||
"to": "enode://c9902d1a77c0d51adf2b94c6d14f7dd10ad732b18986a221464563758b9b9a04fe159b75cdbf777196b5f90e75f0f04513e018a2f7622e4fcadd45a6b9e2cc9a"
|
||||
},
|
||||
{
|
||||
"from": "enode://d8cc415f199cba179af255ac6effc72afec5aee0c7754ae0a00ee8f91a6be4affc3aa75a75bba4ab75fb07aa7e2b50eeb0ca785c7066d1d23fd772deeefbd3aa",
|
||||
"to": "enode://5b94644c474fef835f68bca9460b79daa0d44101b581f159ca4de594f4e4d4b7f701f97fb5713267bd89b22df351ead20a1587dd604d5c6f1c3ebddf3f7f48c4"
|
||||
},
|
||||
{
|
||||
"from": "enode://d8cc415f199cba179af255ac6effc72afec5aee0c7754ae0a00ee8f91a6be4affc3aa75a75bba4ab75fb07aa7e2b50eeb0ca785c7066d1d23fd772deeefbd3aa",
|
||||
"to": "enode://e76225bd1dc9ee34b2e551f82646f7a6f2f74bbd8a5f5bb048b9057e34696813b2ceddd3c75069b50c506c15bbc9b7153410e73e0637390a6550c29dea3995aa"
|
||||
},
|
||||
{
|
||||
"from": "enode://d8cc415f199cba179af255ac6effc72afec5aee0c7754ae0a00ee8f91a6be4affc3aa75a75bba4ab75fb07aa7e2b50eeb0ca785c7066d1d23fd772deeefbd3aa",
|
||||
"to": "enode://6419bc38b529be4c7ce7065783eeac741f20fbe8138f6cb0a12b2928e64cefda8c7c1ab6657e59a2c7d68ab9170e25e7e83a34d4fbd5231727c7f5bde800fc54"
|
||||
},
|
||||
{
|
||||
"from": "enode://13b19a04feca4ebb50813019ef145d4622c650ae2cdc2cba0b00758b2f4bc2d6629a646d3a49eddae17b8e818fe41c558f1746bb1b713c3acad880c537c87ca2",
|
||||
"to": "enode://c9902d1a77c0d51adf2b94c6d14f7dd10ad732b18986a221464563758b9b9a04fe159b75cdbf777196b5f90e75f0f04513e018a2f7622e4fcadd45a6b9e2cc9a"
|
||||
},
|
||||
{
|
||||
"from": "enode://13b19a04feca4ebb50813019ef145d4622c650ae2cdc2cba0b00758b2f4bc2d6629a646d3a49eddae17b8e818fe41c558f1746bb1b713c3acad880c537c87ca2",
|
||||
"to": "enode://520b57f167660f2b4004866b848fe1015d8b5d7d98dff0207a7e4925478c937eaa1d0e07994be75d5023d18f6fc7633562d0f69b320835726d3c24645140b715"
|
||||
},
|
||||
{
|
||||
"from": "enode://2db289c17757f863d2d833a4d6641cd1a096dd0d392e356e3c4b6fed73382f9451b1fb23ff25f8c99e76bdb587428358817ab4969d358b24a126fa59c8bd98af",
|
||||
"to": "enode://f5c8f1ab0be7d77364cf7da43297abcc19cb8fbf66458ab78236235b362093c34d68bd0cf22c9a900a1b15398515edbb42663dafdaee8d69d91d40e8e58f69c8"
|
||||
},
|
||||
{
|
||||
"from": "enode://2db289c17757f863d2d833a4d6641cd1a096dd0d392e356e3c4b6fed73382f9451b1fb23ff25f8c99e76bdb587428358817ab4969d358b24a126fa59c8bd98af",
|
||||
"to": "enode://d8cc415f199cba179af255ac6effc72afec5aee0c7754ae0a00ee8f91a6be4affc3aa75a75bba4ab75fb07aa7e2b50eeb0ca785c7066d1d23fd772deeefbd3aa"
|
||||
},
|
||||
{
|
||||
"from": "enode://2db289c17757f863d2d833a4d6641cd1a096dd0d392e356e3c4b6fed73382f9451b1fb23ff25f8c99e76bdb587428358817ab4969d358b24a126fa59c8bd98af",
|
||||
"to": "enode://9947aaf751f83384eada5a358c679a322e26c79051097eea44164c9d5d6da2c9984b61d865a777b250fabcb1cf31a835045cf132fadb43e067641914c2991265"
|
||||
},
|
||||
{
|
||||
"from": "enode://2db289c17757f863d2d833a4d6641cd1a096dd0d392e356e3c4b6fed73382f9451b1fb23ff25f8c99e76bdb587428358817ab4969d358b24a126fa59c8bd98af",
|
||||
"to": "enode://41a6567457b90fb8e9856575deaaaa90c344dda1897275bff680d56018d4dcdc8330a85aecc9a5d4f69f9b145f047e0d1fcda4d78647534b32167e983129e091"
|
||||
},
|
||||
{
|
||||
"from": "enode://2db289c17757f863d2d833a4d6641cd1a096dd0d392e356e3c4b6fed73382f9451b1fb23ff25f8c99e76bdb587428358817ab4969d358b24a126fa59c8bd98af",
|
||||
"to": "enode://f17f5ce80833211c6a93762f2ee55bf97115dd3f7b743b2ab7e9c3d7962defca70f3b5e4a8b96fa46d5a33f4319140cf2ff0ab85939a62d4cbf1b69c65d53946"
|
||||
},
|
||||
{
|
||||
"from": "enode://2db289c17757f863d2d833a4d6641cd1a096dd0d392e356e3c4b6fed73382f9451b1fb23ff25f8c99e76bdb587428358817ab4969d358b24a126fa59c8bd98af",
|
||||
"to": "enode://7c9adbfec6f76c7efb599db2300aded9a35efc616f3f4aeb1a20dc54eb4d238ed48c3b79273eff264578bd2a1fc583afd8254841c246c55dfe7fe851986fa77d"
|
||||
},
|
||||
{
|
||||
"from": "enode://2db289c17757f863d2d833a4d6641cd1a096dd0d392e356e3c4b6fed73382f9451b1fb23ff25f8c99e76bdb587428358817ab4969d358b24a126fa59c8bd98af",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://5b94644c474fef835f68bca9460b79daa0d44101b581f159ca4de594f4e4d4b7f701f97fb5713267bd89b22df351ead20a1587dd604d5c6f1c3ebddf3f7f48c4",
|
||||
"to": "enode://c9902d1a77c0d51adf2b94c6d14f7dd10ad732b18986a221464563758b9b9a04fe159b75cdbf777196b5f90e75f0f04513e018a2f7622e4fcadd45a6b9e2cc9a"
|
||||
},
|
||||
{
|
||||
"from": "enode://5b94644c474fef835f68bca9460b79daa0d44101b581f159ca4de594f4e4d4b7f701f97fb5713267bd89b22df351ead20a1587dd604d5c6f1c3ebddf3f7f48c4",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://cfa1547aeb9d5ab143f138d945b3f72878ec204b7cc90f163fb3dce4201ad837478770c615785e597390eb8dbd26536f5b42b2e7620f1a6a9974bc894fb09d6d",
|
||||
"to": "enode://b270650132ec89eda0e0addac435d1074007818291cc25510d332752f81901d161777e80e138f5b25028660e9af05983f77bc240aa7628a4cf487131910c64b3"
|
||||
},
|
||||
{
|
||||
"from": "enode://cfa1547aeb9d5ab143f138d945b3f72878ec204b7cc90f163fb3dce4201ad837478770c615785e597390eb8dbd26536f5b42b2e7620f1a6a9974bc894fb09d6d",
|
||||
"to": "enode://c9902d1a77c0d51adf2b94c6d14f7dd10ad732b18986a221464563758b9b9a04fe159b75cdbf777196b5f90e75f0f04513e018a2f7622e4fcadd45a6b9e2cc9a"
|
||||
},
|
||||
{
|
||||
"from": "enode://cfa1547aeb9d5ab143f138d945b3f72878ec204b7cc90f163fb3dce4201ad837478770c615785e597390eb8dbd26536f5b42b2e7620f1a6a9974bc894fb09d6d",
|
||||
"to": "enode://f5c8f1ab0be7d77364cf7da43297abcc19cb8fbf66458ab78236235b362093c34d68bd0cf22c9a900a1b15398515edbb42663dafdaee8d69d91d40e8e58f69c8"
|
||||
},
|
||||
{
|
||||
"from": "enode://cfa1547aeb9d5ab143f138d945b3f72878ec204b7cc90f163fb3dce4201ad837478770c615785e597390eb8dbd26536f5b42b2e7620f1a6a9974bc894fb09d6d",
|
||||
"to": "enode://520b57f167660f2b4004866b848fe1015d8b5d7d98dff0207a7e4925478c937eaa1d0e07994be75d5023d18f6fc7633562d0f69b320835726d3c24645140b715"
|
||||
},
|
||||
{
|
||||
"from": "enode://cfa1547aeb9d5ab143f138d945b3f72878ec204b7cc90f163fb3dce4201ad837478770c615785e597390eb8dbd26536f5b42b2e7620f1a6a9974bc894fb09d6d",
|
||||
"to": "enode://f17f5ce80833211c6a93762f2ee55bf97115dd3f7b743b2ab7e9c3d7962defca70f3b5e4a8b96fa46d5a33f4319140cf2ff0ab85939a62d4cbf1b69c65d53946"
|
||||
},
|
||||
{
|
||||
"from": "enode://cfa1547aeb9d5ab143f138d945b3f72878ec204b7cc90f163fb3dce4201ad837478770c615785e597390eb8dbd26536f5b42b2e7620f1a6a9974bc894fb09d6d",
|
||||
"to": "enode://7c9adbfec6f76c7efb599db2300aded9a35efc616f3f4aeb1a20dc54eb4d238ed48c3b79273eff264578bd2a1fc583afd8254841c246c55dfe7fe851986fa77d"
|
||||
},
|
||||
{
|
||||
"from": "enode://cfa1547aeb9d5ab143f138d945b3f72878ec204b7cc90f163fb3dce4201ad837478770c615785e597390eb8dbd26536f5b42b2e7620f1a6a9974bc894fb09d6d",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://cd29456310d3526660cf3895bceeac648dc02ed5496f4c0e2f7332c4faf1a006d1b89fcf1d3761b3d343dc8cde605b598ddab8c1b7f003ad44d05b2f90c680e2",
|
||||
"to": "enode://c9902d1a77c0d51adf2b94c6d14f7dd10ad732b18986a221464563758b9b9a04fe159b75cdbf777196b5f90e75f0f04513e018a2f7622e4fcadd45a6b9e2cc9a"
|
||||
},
|
||||
{
|
||||
"from": "enode://cd29456310d3526660cf3895bceeac648dc02ed5496f4c0e2f7332c4faf1a006d1b89fcf1d3761b3d343dc8cde605b598ddab8c1b7f003ad44d05b2f90c680e2",
|
||||
"to": "enode://e76225bd1dc9ee34b2e551f82646f7a6f2f74bbd8a5f5bb048b9057e34696813b2ceddd3c75069b50c506c15bbc9b7153410e73e0637390a6550c29dea3995aa"
|
||||
},
|
||||
{
|
||||
"from": "enode://cd29456310d3526660cf3895bceeac648dc02ed5496f4c0e2f7332c4faf1a006d1b89fcf1d3761b3d343dc8cde605b598ddab8c1b7f003ad44d05b2f90c680e2",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://7c9adbfec6f76c7efb599db2300aded9a35efc616f3f4aeb1a20dc54eb4d238ed48c3b79273eff264578bd2a1fc583afd8254841c246c55dfe7fe851986fa77d",
|
||||
"to": "enode://c9902d1a77c0d51adf2b94c6d14f7dd10ad732b18986a221464563758b9b9a04fe159b75cdbf777196b5f90e75f0f04513e018a2f7622e4fcadd45a6b9e2cc9a"
|
||||
},
|
||||
{
|
||||
"from": "enode://7c9adbfec6f76c7efb599db2300aded9a35efc616f3f4aeb1a20dc54eb4d238ed48c3b79273eff264578bd2a1fc583afd8254841c246c55dfe7fe851986fa77d",
|
||||
"to": "enode://9947aaf751f83384eada5a358c679a322e26c79051097eea44164c9d5d6da2c9984b61d865a777b250fabcb1cf31a835045cf132fadb43e067641914c2991265"
|
||||
},
|
||||
{
|
||||
"from": "enode://7c9adbfec6f76c7efb599db2300aded9a35efc616f3f4aeb1a20dc54eb4d238ed48c3b79273eff264578bd2a1fc583afd8254841c246c55dfe7fe851986fa77d",
|
||||
"to": "enode://f17f5ce80833211c6a93762f2ee55bf97115dd3f7b743b2ab7e9c3d7962defca70f3b5e4a8b96fa46d5a33f4319140cf2ff0ab85939a62d4cbf1b69c65d53946"
|
||||
},
|
||||
{
|
||||
"from": "enode://7c9adbfec6f76c7efb599db2300aded9a35efc616f3f4aeb1a20dc54eb4d238ed48c3b79273eff264578bd2a1fc583afd8254841c246c55dfe7fe851986fa77d",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://c9902d1a77c0d51adf2b94c6d14f7dd10ad732b18986a221464563758b9b9a04fe159b75cdbf777196b5f90e75f0f04513e018a2f7622e4fcadd45a6b9e2cc9a",
|
||||
"to": "enode://2db289c17757f863d2d833a4d6641cd1a096dd0d392e356e3c4b6fed73382f9451b1fb23ff25f8c99e76bdb587428358817ab4969d358b24a126fa59c8bd98af"
|
||||
},
|
||||
{
|
||||
"from": "enode://c9902d1a77c0d51adf2b94c6d14f7dd10ad732b18986a221464563758b9b9a04fe159b75cdbf777196b5f90e75f0f04513e018a2f7622e4fcadd45a6b9e2cc9a",
|
||||
"to": "enode://6833ef592ba6ac03d9797fd757467909db84ce832f749c060b29a4d4e0b82cd6865e4bc340cd73462a39677142656e7999eaff7aecc4746703d3350b50c15ebd"
|
||||
},
|
||||
{
|
||||
"from": "enode://9b246088fd8224ce44a106068a6aa4ca1e17433443babe41905e3d07d89df4685359de20c6115ff253e3a38d0ed0954c50afe60cdf970930d05037313db17afd",
|
||||
"to": "enode://7eb662ba026270024a625d9df71b5a466f61a303dff47ae61cccc3d18550ecc2731f2ea2d768f121da4e7cd7fc4f9ad30ab278e981a2e9c2a0d7d6ee0430cfe2"
|
||||
},
|
||||
{
|
||||
"from": "enode://9b246088fd8224ce44a106068a6aa4ca1e17433443babe41905e3d07d89df4685359de20c6115ff253e3a38d0ed0954c50afe60cdf970930d05037313db17afd",
|
||||
"to": "enode://b270650132ec89eda0e0addac435d1074007818291cc25510d332752f81901d161777e80e138f5b25028660e9af05983f77bc240aa7628a4cf487131910c64b3"
|
||||
},
|
||||
{
|
||||
"from": "enode://9b246088fd8224ce44a106068a6aa4ca1e17433443babe41905e3d07d89df4685359de20c6115ff253e3a38d0ed0954c50afe60cdf970930d05037313db17afd",
|
||||
"to": "enode://5b94644c474fef835f68bca9460b79daa0d44101b581f159ca4de594f4e4d4b7f701f97fb5713267bd89b22df351ead20a1587dd604d5c6f1c3ebddf3f7f48c4"
|
||||
},
|
||||
{
|
||||
"from": "enode://9b246088fd8224ce44a106068a6aa4ca1e17433443babe41905e3d07d89df4685359de20c6115ff253e3a38d0ed0954c50afe60cdf970930d05037313db17afd",
|
||||
"to": "enode://520b57f167660f2b4004866b848fe1015d8b5d7d98dff0207a7e4925478c937eaa1d0e07994be75d5023d18f6fc7633562d0f69b320835726d3c24645140b715"
|
||||
},
|
||||
{
|
||||
"from": "enode://9b246088fd8224ce44a106068a6aa4ca1e17433443babe41905e3d07d89df4685359de20c6115ff253e3a38d0ed0954c50afe60cdf970930d05037313db17afd",
|
||||
"to": "enode://cd29456310d3526660cf3895bceeac648dc02ed5496f4c0e2f7332c4faf1a006d1b89fcf1d3761b3d343dc8cde605b598ddab8c1b7f003ad44d05b2f90c680e2"
|
||||
},
|
||||
{
|
||||
"from": "enode://9b246088fd8224ce44a106068a6aa4ca1e17433443babe41905e3d07d89df4685359de20c6115ff253e3a38d0ed0954c50afe60cdf970930d05037313db17afd",
|
||||
"to": "enode://7c9adbfec6f76c7efb599db2300aded9a35efc616f3f4aeb1a20dc54eb4d238ed48c3b79273eff264578bd2a1fc583afd8254841c246c55dfe7fe851986fa77d"
|
||||
}
|
||||
]
|
||||
}
|
55
simulation/examples/snapshot/docker_test.go
Normal file
55
simulation/examples/snapshot/docker_test.go
Normal file
@@ -0,0 +1,55 @@
|
||||
package snapshot
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/ethersphere/swarm/simulation"
|
||||
)
|
||||
|
||||
func TestDockerSnapshotFromFile(t *testing.T) {
|
||||
snap, err := simulation.LoadSnapshotFromFile("docker.json")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if !simulation.IsDockerAvailable(snap.DefaultAdapter.Config.(simulation.DockerAdapterConfig).DaemonAddr) {
|
||||
t.Skip("docker is not available, skipping test")
|
||||
}
|
||||
|
||||
sim, err := simulation.NewSimulationFromSnapshot(snap)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
defer func() {
|
||||
err = sim.StopAll()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}()
|
||||
|
||||
nodes := sim.GetAll()
|
||||
if len(nodes) != len(snap.Nodes) {
|
||||
t.Fatalf("Got %d . Expected %d nodes", len(nodes), len(snap.Nodes))
|
||||
}
|
||||
|
||||
// Check hive output on the first node
|
||||
node, err := sim.Get(simulation.NodeID("test-0"))
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
client, err := sim.RPCClient(node.Info().ID)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to get rpc client: %v", err)
|
||||
}
|
||||
|
||||
var hive string
|
||||
err = client.Call(&hive, "bzz_hive")
|
||||
if err != nil {
|
||||
t.Errorf("could not get hive info: %v", err)
|
||||
}
|
||||
|
||||
fmt.Println(hive)
|
||||
}
|
1
simulation/examples/snapshot/snapshot.go
Normal file
1
simulation/examples/snapshot/snapshot.go
Normal file
@@ -0,0 +1 @@
|
||||
package snapshot
|
Reference in New Issue
Block a user