diff --git a/cluster_config_test.go b/cluster_config_test.go index 2d8cbf8a..1ba3c103 100644 --- a/cluster_config_test.go +++ b/cluster_config_test.go @@ -87,13 +87,6 @@ func TestLoadJSON(t *testing.T) { return cfg, nil } - t.Run("bad id", func(t *testing.T) { - _, err := loadJSON2(t, func(j *configJSON) { j.ID = "abc" }) - if err == nil { - t.Error("expected error decoding ID") - } - }) - t.Run("empty default peername", func(t *testing.T) { cfg, err := loadJSON2(t, func(j *configJSON) { j.Peername = "" }) if err != nil { @@ -104,13 +97,6 @@ func TestLoadJSON(t *testing.T) { } }) - t.Run("bad private key", func(t *testing.T) { - _, err := loadJSON2(t, func(j *configJSON) { j.PrivateKey = "abc" }) - if err == nil { - t.Error("expected error parsing private key") - } - }) - t.Run("bad listen multiaddress", func(t *testing.T) { _, err := loadJSON2(t, func(j *configJSON) { j.ListenMultiaddress = "abc" }) if err == nil { @@ -212,11 +198,6 @@ func TestApplyEnvVars(t *testing.T) { func TestValidate(t *testing.T) { cfg := &Config{} - cfg.Default() - cfg.ID = "" - if cfg.Validate() == nil { - t.Fatal("expected error validating") - } cfg.Default() cfg.MonitorPingInterval = 0 diff --git a/cluster_test.go b/cluster_test.go index 97255bcd..62a2adfd 100644 --- a/cluster_test.go +++ b/cluster_test.go @@ -3,6 +3,7 @@ package ipfscluster import ( "context" "errors" + "fmt" "mime/multipart" "os" "path/filepath" @@ -13,6 +14,7 @@ import ( "github.com/ipfs/ipfs-cluster/adder/sharding" "github.com/ipfs/ipfs-cluster/allocator/ascendalloc" "github.com/ipfs/ipfs-cluster/api" + "github.com/ipfs/ipfs-cluster/config" "github.com/ipfs/ipfs-cluster/consensus/raft" "github.com/ipfs/ipfs-cluster/datastore/inmem" "github.com/ipfs/ipfs-cluster/informer/numpin" @@ -139,9 +141,9 @@ type mockTracer struct { } func testingCluster(t *testing.T) (*Cluster, *mockAPI, *mockConnector, PinTracker) { - clusterCfg, _, _, _, _, raftCfg, _, maptrackerCfg, statelesstrackerCfg, psmonCfg, _, _ := testingConfigs() + ident, clusterCfg, _, _, _, _, raftCfg, _, maptrackerCfg, statelesstrackerCfg, psmonCfg, _, _ := testingConfigs() - host, pubsub, dht, err := NewClusterHost(context.Background(), clusterCfg) + host, pubsub, dht, err := NewClusterHost(context.Background(), ident, clusterCfg) if err != nil { t.Fatal(err) } @@ -149,7 +151,7 @@ func testingCluster(t *testing.T) (*Cluster, *mockAPI, *mockConnector, PinTracke api := &mockAPI{} proxy := &mockProxy{} ipfs := &mockConnector{} - tracker := makePinTracker(t, clusterCfg.ID, maptrackerCfg, statelesstrackerCfg, clusterCfg.Peername) + tracker := makePinTracker(t, ident.ID, maptrackerCfg, statelesstrackerCfg, clusterCfg.Peername) tracer := &mockTracer{} store := inmem.New() @@ -849,9 +851,15 @@ func TestClusterPeers(t *testing.T) { t.Fatal("expected 1 peer") } - clusterCfg := &Config{} - clusterCfg.LoadJSON(testingClusterCfg) - if peers[0].ID != clusterCfg.ID { + ident := &config.Identity{} + err := ident.LoadJSON(testingIdentity) + if err != nil { + t.Fatal(err) + } + + if peers[0].ID != ident.ID { + fmt.Println(peers[0].ID) + fmt.Println(ident.ID) t.Error("bad member") } } diff --git a/config/identity.go b/config/identity.go index cccffeeb..ee017355 100644 --- a/config/identity.go +++ b/config/identity.go @@ -118,10 +118,10 @@ func (ident *Identity) LoadJSON(raw []byte) error { return err } - return ident.applyConfigJSON(jID) + return ident.applyIdentityJSON(jID) } -func (ident *Identity) applyConfigJSON(jID *identityJSON) error { +func (ident *Identity) applyIdentityJSON(jID *identityJSON) error { pid, err := peer.IDB58Decode(jID.ID) if err != nil { err = fmt.Errorf("error decoding cluster ID: %s", err) @@ -180,11 +180,14 @@ func (ident *Identity) ApplyEnvVars() error { if err != nil { return err } - err = envconfig.Process(ident.ConfigKey(), jID) if err != nil { return err } - - return ident.applyConfigJSON(jID) + return ident.applyIdentityJSON(jID) +} + +// Equals returns true if equal to provided identity. +func (ident *Identity) Equals(i *Identity) bool { + return ident.ID == i.ID && ident.PrivateKey.Equals(i.PrivateKey) } diff --git a/config/identity_test.go b/config/identity_test.go new file mode 100644 index 00000000..5fe3c427 --- /dev/null +++ b/config/identity_test.go @@ -0,0 +1,125 @@ +package config + +import ( + "encoding/json" + "os" + "testing" +) + +var identityTestJSON = []byte(`{ + "id": "QmUfSFm12eYCaRdypg48m8RqkXfLW7A2ZeGZb2skeHHDGA", + "private_key": "CAASqAkwggSkAgEAAoIBAQDpT16IRF6bb9tHsCbQ7M+nb2aI8sz8xyt8PoAWM42ki+SNoESIxKb4UhFxixKvtEdGxNE6aUUVc8kFk6wTStJ/X3IGiMetwkXiFiUxabUF/8A6SyvnSVDm+wFuavugpVrZikjLcfrf2xOVgnG3deQQvd/qbAv14jTwMFl+T+8d/cXBo8Mn/leLZCQun/EJEnkXP5MjgNI8XcWUE4NnH3E0ESSm6Pkm8MhMDZ2fmzNgqEyJ0GVinNgSml3Pyha3PBSj5LRczLip/ie4QkKx5OHvX2L3sNv/JIUHse5HSbjZ1c/4oGCYMVTYCykWiczrxBUOlcr8RwnZLOm4n2bCt5ZhAgMBAAECggEAVkePwfzmr7zR7tTpxeGNeXHtDUAdJm3RWwUSASPXgb5qKyXVsm5nAPX4lXDE3E1i/nzSkzNS5PgIoxNVU10cMxZs6JW0okFx7oYaAwgAddN6lxQtjD7EuGaixN6zZ1k/G6vT98iS6i3uNCAlRZ9HVBmjsOF8GtYolZqLvfZ5izEVFlLVq/BCs7Y5OrDrbGmn3XupfitVWYExV0BrHpobDjsx2fYdTZkmPpSSvXNcm4Iq2AXVQzoqAfGo7+qsuLCZtVlyTfVKQjMvE2ffzN1dQunxixOvev/fz4WSjGnRpC6QLn6Oqps9+VxQKqKuXXqUJC+U45DuvA94Of9MvZfAAQKBgQD7xmXueXRBMr2+0WftybAV024ap0cXFrCAu+KWC1SUddCfkiV7e5w+kRJx6RH1cg4cyyCL8yhHZ99Z5V0Mxa/b/usuHMadXPyX5szVI7dOGgIC9q8IijN7B7GMFAXc8+qC7kivehJzjQghpRRAqvRzjDls4gmbNPhbH1jUiU124QKBgQDtOaW5/fOEtOq0yWbDLkLdjImct6oKMLhENL6yeIKjMYgifzHb2adk7rWG3qcMrdgaFtDVfqv8UmMEkzk7bSkovMVj3SkLzMz84ii1SkSfyaCXgt/UOzDkqAUYB0cXMppYA7jxHa2OY8oEHdBgmyJXdLdzJxCp851AoTlRUSePgQKBgQCQgKgUHOUaXnMEx88sbOuBO14gMg3dNIqM+Ejt8QbURmI8k3arzqA4UK8Tbb9+7b0nzXWanS5q/TT1tWyYXgW28DIuvxlHTA01aaP6WItmagrphIelERzG6f1+9ib/T4czKmvROvDIHROjq8lZ7ERs5Pg4g+sbh2VbdzxWj49EQQKBgFEna36ZVfmMOs7mJ3WWGeHY9ira2hzqVd9fe+1qNKbHhx7mDJR9fTqWPxuIh/Vac5dZPtAKqaOEO8OQ6f9edLou+ggT3LrgsS/B3tNGOPvA6mNqrk/Yf/15TWTO+I8DDLIXc+lokbsogC+wU1z5NWJd13RZZOX/JUi63vTmonYBAoGBAIpglLCH2sPXfmguO6p8QcQcv4RjAU1c0GP4P5PNN3Wzo0ItydVd2LHJb6MdmL6ypeiwNklzPFwTeRlKTPmVxJ+QPg1ct/3tAURN/D40GYw9ojDhqmdSl4HW4d6gHS2lYzSFeU5jkG49y5nirOOoEgHy95wghkh6BfpwHujYJGw4" +}`) + +var ( + ID = "QmUfSFm12eYCaRdypg48m8RqkXfLW7A2ZeGZb2skeHHDGA" + PrivateKey = "CAASqAkwggSkAgEAAoIBAQDpT16IRF6bb9tHsCbQ7M+nb2aI8sz8xyt8PoAWM42ki+SNoESIxKb4UhFxixKvtEdGxNE6aUUVc8kFk6wTStJ/X3IGiMetwkXiFiUxabUF/8A6SyvnSVDm+wFuavugpVrZikjLcfrf2xOVgnG3deQQvd/qbAv14jTwMFl+T+8d/cXBo8Mn/leLZCQun/EJEnkXP5MjgNI8XcWUE4NnH3E0ESSm6Pkm8MhMDZ2fmzNgqEyJ0GVinNgSml3Pyha3PBSj5LRczLip/ie4QkKx5OHvX2L3sNv/JIUHse5HSbjZ1c/4oGCYMVTYCykWiczrxBUOlcr8RwnZLOm4n2bCt5ZhAgMBAAECggEAVkePwfzmr7zR7tTpxeGNeXHtDUAdJm3RWwUSASPXgb5qKyXVsm5nAPX4lXDE3E1i/nzSkzNS5PgIoxNVU10cMxZs6JW0okFx7oYaAwgAddN6lxQtjD7EuGaixN6zZ1k/G6vT98iS6i3uNCAlRZ9HVBmjsOF8GtYolZqLvfZ5izEVFlLVq/BCs7Y5OrDrbGmn3XupfitVWYExV0BrHpobDjsx2fYdTZkmPpSSvXNcm4Iq2AXVQzoqAfGo7+qsuLCZtVlyTfVKQjMvE2ffzN1dQunxixOvev/fz4WSjGnRpC6QLn6Oqps9+VxQKqKuXXqUJC+U45DuvA94Of9MvZfAAQKBgQD7xmXueXRBMr2+0WftybAV024ap0cXFrCAu+KWC1SUddCfkiV7e5w+kRJx6RH1cg4cyyCL8yhHZ99Z5V0Mxa/b/usuHMadXPyX5szVI7dOGgIC9q8IijN7B7GMFAXc8+qC7kivehJzjQghpRRAqvRzjDls4gmbNPhbH1jUiU124QKBgQDtOaW5/fOEtOq0yWbDLkLdjImct6oKMLhENL6yeIKjMYgifzHb2adk7rWG3qcMrdgaFtDVfqv8UmMEkzk7bSkovMVj3SkLzMz84ii1SkSfyaCXgt/UOzDkqAUYB0cXMppYA7jxHa2OY8oEHdBgmyJXdLdzJxCp851AoTlRUSePgQKBgQCQgKgUHOUaXnMEx88sbOuBO14gMg3dNIqM+Ejt8QbURmI8k3arzqA4UK8Tbb9+7b0nzXWanS5q/TT1tWyYXgW28DIuvxlHTA01aaP6WItmagrphIelERzG6f1+9ib/T4czKmvROvDIHROjq8lZ7ERs5Pg4g+sbh2VbdzxWj49EQQKBgFEna36ZVfmMOs7mJ3WWGeHY9ira2hzqVd9fe+1qNKbHhx7mDJR9fTqWPxuIh/Vac5dZPtAKqaOEO8OQ6f9edLou+ggT3LrgsS/B3tNGOPvA6mNqrk/Yf/15TWTO+I8DDLIXc+lokbsogC+wU1z5NWJd13RZZOX/JUi63vTmonYBAoGBAIpglLCH2sPXfmguO6p8QcQcv4RjAU1c0GP4P5PNN3Wzo0ItydVd2LHJb6MdmL6ypeiwNklzPFwTeRlKTPmVxJ+QPg1ct/3tAURN/D40GYw9ojDhqmdSl4HW4d6gHS2lYzSFeU5jkG49y5nirOOoEgHy95wghkh6BfpwHujYJGw4" +) + +func TestLoadJSON(t *testing.T) { + t.Run("basic", func(t *testing.T) { + ident := &Identity{} + err := ident.LoadJSON(identityTestJSON) + if err != nil { + t.Fatal(err) + } + }) + + loadJSON := func(t *testing.T, f func(j *identityJSON)) (*Identity, error) { + ident := &Identity{} + j := &identityJSON{} + json.Unmarshal(identityTestJSON, j) + f(j) + tst, err := json.Marshal(j) + if err != nil { + return ident, err + } + err = ident.LoadJSON(tst) + if err != nil { + return ident, err + } + return ident, nil + } + + t.Run("bad id", func(t *testing.T) { + _, err := loadJSON(t, func(j *identityJSON) { j.ID = "abc" }) + if err == nil { + t.Error("expected error decoding ID") + } + }) + + t.Run("bad private key", func(t *testing.T) { + _, err := loadJSON(t, func(j *identityJSON) { j.PrivateKey = "abc" }) + if err == nil { + t.Error("expected error parsing private key") + } + }) +} + +func TestToJSON(t *testing.T) { + ident := &Identity{} + err := ident.LoadJSON(identityTestJSON) + if err != nil { + t.Fatal(err) + } + newjson, err := ident.ToJSON() + if err != nil { + t.Fatal(err) + } + ident2 := &Identity{} + err = ident2.LoadJSON(newjson) + if err != nil { + t.Fatal(err) + } + + if !ident.Equals(ident2) { + t.Error("did not load to the same identity") + } +} + +func TestApplyEnvVars(t *testing.T) { + os.Setenv("CLUSTER_ID", ID) + os.Setenv("CLUSTER_PRIVATEKEY", PrivateKey) + + ident, err := NewIdentity() + if err != nil { + t.Fatal(err) + } + err = ident.ApplyEnvVars() + if err != nil { + t.Fatal(err) + } + + ident2 := &Identity{} + err = ident2.LoadJSON(identityTestJSON) + if err != nil { + t.Fatal(err) + } + + if !ident.Equals(ident2) { + t.Error("failed to override identity with env var") + } +} + +func TestValidate(t *testing.T) { + ident := &Identity{} + + if ident.Validate() == nil { + t.Fatal("expected error validating") + } + + ident, err := NewIdentity() + if err != nil { + t.Fatal(err) + } + + if ident.Validate() != nil { + t.Error("expected to validate without error") + } + + ident.ID = "" + if ident.Validate() == nil { + t.Fatal("expected error validating") + } + +} diff --git a/config_test.go b/config_test.go index 1dabef38..fbcb17b2 100644 --- a/config_test.go +++ b/config_test.go @@ -3,6 +3,7 @@ package ipfscluster import ( "github.com/ipfs/ipfs-cluster/api/ipfsproxy" "github.com/ipfs/ipfs-cluster/api/rest" + "github.com/ipfs/ipfs-cluster/config" "github.com/ipfs/ipfs-cluster/consensus/crdt" "github.com/ipfs/ipfs-cluster/consensus/raft" "github.com/ipfs/ipfs-cluster/datastore/badger" @@ -16,9 +17,12 @@ import ( var testingClusterSecret, _ = DecodeClusterSecret("2588b80d5cb05374fa142aed6cbb047d1f4ef8ef15e37eba68c65b9d30df67ed") +var testingIdentity = []byte(`{ + "id": "QmUfSFm12eYCaRdypg48m8RqkXfLW7A2ZeGZb2skeHHDGA", + "private_key": "CAASqAkwggSkAgEAAoIBAQDpT16IRF6bb9tHsCbQ7M+nb2aI8sz8xyt8PoAWM42ki+SNoESIxKb4UhFxixKvtEdGxNE6aUUVc8kFk6wTStJ/X3IGiMetwkXiFiUxabUF/8A6SyvnSVDm+wFuavugpVrZikjLcfrf2xOVgnG3deQQvd/qbAv14jTwMFl+T+8d/cXBo8Mn/leLZCQun/EJEnkXP5MjgNI8XcWUE4NnH3E0ESSm6Pkm8MhMDZ2fmzNgqEyJ0GVinNgSml3Pyha3PBSj5LRczLip/ie4QkKx5OHvX2L3sNv/JIUHse5HSbjZ1c/4oGCYMVTYCykWiczrxBUOlcr8RwnZLOm4n2bCt5ZhAgMBAAECggEAVkePwfzmr7zR7tTpxeGNeXHtDUAdJm3RWwUSASPXgb5qKyXVsm5nAPX4lXDE3E1i/nzSkzNS5PgIoxNVU10cMxZs6JW0okFx7oYaAwgAddN6lxQtjD7EuGaixN6zZ1k/G6vT98iS6i3uNCAlRZ9HVBmjsOF8GtYolZqLvfZ5izEVFlLVq/BCs7Y5OrDrbGmn3XupfitVWYExV0BrHpobDjsx2fYdTZkmPpSSvXNcm4Iq2AXVQzoqAfGo7+qsuLCZtVlyTfVKQjMvE2ffzN1dQunxixOvev/fz4WSjGnRpC6QLn6Oqps9+VxQKqKuXXqUJC+U45DuvA94Of9MvZfAAQKBgQD7xmXueXRBMr2+0WftybAV024ap0cXFrCAu+KWC1SUddCfkiV7e5w+kRJx6RH1cg4cyyCL8yhHZ99Z5V0Mxa/b/usuHMadXPyX5szVI7dOGgIC9q8IijN7B7GMFAXc8+qC7kivehJzjQghpRRAqvRzjDls4gmbNPhbH1jUiU124QKBgQDtOaW5/fOEtOq0yWbDLkLdjImct6oKMLhENL6yeIKjMYgifzHb2adk7rWG3qcMrdgaFtDVfqv8UmMEkzk7bSkovMVj3SkLzMz84ii1SkSfyaCXgt/UOzDkqAUYB0cXMppYA7jxHa2OY8oEHdBgmyJXdLdzJxCp851AoTlRUSePgQKBgQCQgKgUHOUaXnMEx88sbOuBO14gMg3dNIqM+Ejt8QbURmI8k3arzqA4UK8Tbb9+7b0nzXWanS5q/TT1tWyYXgW28DIuvxlHTA01aaP6WItmagrphIelERzG6f1+9ib/T4czKmvROvDIHROjq8lZ7ERs5Pg4g+sbh2VbdzxWj49EQQKBgFEna36ZVfmMOs7mJ3WWGeHY9ira2hzqVd9fe+1qNKbHhx7mDJR9fTqWPxuIh/Vac5dZPtAKqaOEO8OQ6f9edLou+ggT3LrgsS/B3tNGOPvA6mNqrk/Yf/15TWTO+I8DDLIXc+lokbsogC+wU1z5NWJd13RZZOX/JUi63vTmonYBAoGBAIpglLCH2sPXfmguO6p8QcQcv4RjAU1c0GP4P5PNN3Wzo0ItydVd2LHJb6MdmL6ypeiwNklzPFwTeRlKTPmVxJ+QPg1ct/3tAURN/D40GYw9ojDhqmdSl4HW4d6gHS2lYzSFeU5jkG49y5nirOOoEgHy95wghkh6BfpwHujYJGw4" +}`) + var testingClusterCfg = []byte(`{ - "id": "QmUfSFm12eYCaRdypg48m8RqkXfLW7A2ZeGZb2skeHHDGA", - "private_key": "CAASqAkwggSkAgEAAoIBAQDpT16IRF6bb9tHsCbQ7M+nb2aI8sz8xyt8PoAWM42ki+SNoESIxKb4UhFxixKvtEdGxNE6aUUVc8kFk6wTStJ/X3IGiMetwkXiFiUxabUF/8A6SyvnSVDm+wFuavugpVrZikjLcfrf2xOVgnG3deQQvd/qbAv14jTwMFl+T+8d/cXBo8Mn/leLZCQun/EJEnkXP5MjgNI8XcWUE4NnH3E0ESSm6Pkm8MhMDZ2fmzNgqEyJ0GVinNgSml3Pyha3PBSj5LRczLip/ie4QkKx5OHvX2L3sNv/JIUHse5HSbjZ1c/4oGCYMVTYCykWiczrxBUOlcr8RwnZLOm4n2bCt5ZhAgMBAAECggEAVkePwfzmr7zR7tTpxeGNeXHtDUAdJm3RWwUSASPXgb5qKyXVsm5nAPX4lXDE3E1i/nzSkzNS5PgIoxNVU10cMxZs6JW0okFx7oYaAwgAddN6lxQtjD7EuGaixN6zZ1k/G6vT98iS6i3uNCAlRZ9HVBmjsOF8GtYolZqLvfZ5izEVFlLVq/BCs7Y5OrDrbGmn3XupfitVWYExV0BrHpobDjsx2fYdTZkmPpSSvXNcm4Iq2AXVQzoqAfGo7+qsuLCZtVlyTfVKQjMvE2ffzN1dQunxixOvev/fz4WSjGnRpC6QLn6Oqps9+VxQKqKuXXqUJC+U45DuvA94Of9MvZfAAQKBgQD7xmXueXRBMr2+0WftybAV024ap0cXFrCAu+KWC1SUddCfkiV7e5w+kRJx6RH1cg4cyyCL8yhHZ99Z5V0Mxa/b/usuHMadXPyX5szVI7dOGgIC9q8IijN7B7GMFAXc8+qC7kivehJzjQghpRRAqvRzjDls4gmbNPhbH1jUiU124QKBgQDtOaW5/fOEtOq0yWbDLkLdjImct6oKMLhENL6yeIKjMYgifzHb2adk7rWG3qcMrdgaFtDVfqv8UmMEkzk7bSkovMVj3SkLzMz84ii1SkSfyaCXgt/UOzDkqAUYB0cXMppYA7jxHa2OY8oEHdBgmyJXdLdzJxCp851AoTlRUSePgQKBgQCQgKgUHOUaXnMEx88sbOuBO14gMg3dNIqM+Ejt8QbURmI8k3arzqA4UK8Tbb9+7b0nzXWanS5q/TT1tWyYXgW28DIuvxlHTA01aaP6WItmagrphIelERzG6f1+9ib/T4czKmvROvDIHROjq8lZ7ERs5Pg4g+sbh2VbdzxWj49EQQKBgFEna36ZVfmMOs7mJ3WWGeHY9ira2hzqVd9fe+1qNKbHhx7mDJR9fTqWPxuIh/Vac5dZPtAKqaOEO8OQ6f9edLou+ggT3LrgsS/B3tNGOPvA6mNqrk/Yf/15TWTO+I8DDLIXc+lokbsogC+wU1z5NWJd13RZZOX/JUi63vTmonYBAoGBAIpglLCH2sPXfmguO6p8QcQcv4RjAU1c0GP4P5PNN3Wzo0ItydVd2LHJb6MdmL6ypeiwNklzPFwTeRlKTPmVxJ+QPg1ct/3tAURN/D40GYw9ojDhqmdSl4HW4d6gHS2lYzSFeU5jkG49y5nirOOoEgHy95wghkh6BfpwHujYJGw4", "secret": "2588b80d5cb05374fa142aed6cbb047d1f4ef8ef15e37eba68c65b9d30df67ed", "leave_on_shutdown": false, "listen_multiaddress": "/ip4/127.0.0.1/tcp/10000", @@ -114,8 +118,9 @@ var testingTracerCfg = []byte(`{ "enable_tracing": false }`) -func testingConfigs() (*Config, *rest.Config, *ipfsproxy.Config, *ipfshttp.Config, *badger.Config, *raft.Config, *crdt.Config, *maptracker.Config, *stateless.Config, *pubsubmon.Config, *disk.Config, *observations.TracingConfig) { - clusterCfg, apiCfg, proxyCfg, ipfsCfg, badgerCfg, raftCfg, crdtCfg, maptrackerCfg, statelesstrkrCfg, pubsubmonCfg, diskInfCfg, tracingCfg := testingEmptyConfigs() +func testingConfigs() (*config.Identity, *Config, *rest.Config, *ipfsproxy.Config, *ipfshttp.Config, *badger.Config, *raft.Config, *crdt.Config, *maptracker.Config, *stateless.Config, *pubsubmon.Config, *disk.Config, *observations.TracingConfig) { + identity, clusterCfg, apiCfg, proxyCfg, ipfsCfg, badgerCfg, raftCfg, crdtCfg, maptrackerCfg, statelesstrkrCfg, pubsubmonCfg, diskInfCfg, tracingCfg := testingEmptyConfigs() + identity.LoadJSON(testingIdentity) clusterCfg.LoadJSON(testingClusterCfg) apiCfg.LoadJSON(testingAPICfg) proxyCfg.LoadJSON(testingProxyCfg) @@ -129,10 +134,11 @@ func testingConfigs() (*Config, *rest.Config, *ipfsproxy.Config, *ipfshttp.Confi diskInfCfg.LoadJSON(testingDiskInfCfg) tracingCfg.LoadJSON(testingTracerCfg) - return clusterCfg, apiCfg, proxyCfg, ipfsCfg, badgerCfg, raftCfg, crdtCfg, maptrackerCfg, statelesstrkrCfg, pubsubmonCfg, diskInfCfg, tracingCfg + return identity, clusterCfg, apiCfg, proxyCfg, ipfsCfg, badgerCfg, raftCfg, crdtCfg, maptrackerCfg, statelesstrkrCfg, pubsubmonCfg, diskInfCfg, tracingCfg } -func testingEmptyConfigs() (*Config, *rest.Config, *ipfsproxy.Config, *ipfshttp.Config, *badger.Config, *raft.Config, *crdt.Config, *maptracker.Config, *stateless.Config, *pubsubmon.Config, *disk.Config, *observations.TracingConfig) { +func testingEmptyConfigs() (*config.Identity, *Config, *rest.Config, *ipfsproxy.Config, *ipfshttp.Config, *badger.Config, *raft.Config, *crdt.Config, *maptracker.Config, *stateless.Config, *pubsubmon.Config, *disk.Config, *observations.TracingConfig) { + identity := &config.Identity{} clusterCfg := &Config{} apiCfg := &rest.Config{} proxyCfg := &ipfsproxy.Config{} @@ -145,7 +151,7 @@ func testingEmptyConfigs() (*Config, *rest.Config, *ipfsproxy.Config, *ipfshttp. pubsubmonCfg := &pubsubmon.Config{} diskInfCfg := &disk.Config{} tracingCfg := &observations.TracingConfig{} - return clusterCfg, apiCfg, proxyCfg, ipfshttpCfg, badgerCfg, raftCfg, crdtCfg, maptrackerCfg, statelessCfg, pubsubmonCfg, diskInfCfg, tracingCfg + return identity, clusterCfg, apiCfg, proxyCfg, ipfshttpCfg, badgerCfg, raftCfg, crdtCfg, maptrackerCfg, statelessCfg, pubsubmonCfg, diskInfCfg, tracingCfg } // func TestConfigDefault(t *testing.T) { diff --git a/ipfscluster_test.go b/ipfscluster_test.go index 76fcb0f8..0379042c 100644 --- a/ipfscluster_test.go +++ b/ipfscluster_test.go @@ -148,10 +148,10 @@ func createComponents(t *testing.T, host host.Host, pubsub *pubsub.PubSub, dht * peername := fmt.Sprintf("peer_%d", i) - clusterCfg, apiCfg, ipfsproxyCfg, ipfshttpCfg, badgerCfg, raftCfg, crdtCfg, maptrackerCfg, statelesstrackerCfg, psmonCfg, diskInfCfg, tracingCfg := testingConfigs() + ident, clusterCfg, apiCfg, ipfsproxyCfg, ipfshttpCfg, badgerCfg, raftCfg, crdtCfg, maptrackerCfg, statelesstrackerCfg, psmonCfg, diskInfCfg, tracingCfg := testingConfigs() - clusterCfg.ID = host.ID() - clusterCfg.PrivateKey = host.Peerstore().PrivKey(host.ID()) + ident.ID = host.ID() + ident.PrivateKey = host.Peerstore().PrivKey(host.ID()) clusterCfg.Peername = peername clusterCfg.LeaveOnShutdown = false clusterCfg.SetBaseDir(filepath.Join(testsFolder, host.ID().Pretty())) @@ -174,7 +174,7 @@ func createComponents(t *testing.T, host host.Host, pubsub *pubsub.PubSub, dht * ipfs, err := ipfshttp.NewConnector(ipfshttpCfg) checkErr(t, err) - tracker := makePinTracker(t, clusterCfg.ID, maptrackerCfg, statelesstrackerCfg, clusterCfg.Peername) + tracker := makePinTracker(t, ident.ID, maptrackerCfg, statelesstrackerCfg, clusterCfg.Peername) alloc := descendalloc.NewAllocator() inf, err := disk.NewInformer(diskInfCfg) diff --git a/peer_manager_test.go b/peer_manager_test.go index f71a45fd..ab46b44c 100644 --- a/peer_manager_test.go +++ b/peer_manager_test.go @@ -8,6 +8,7 @@ import ( "time" "github.com/ipfs/ipfs-cluster/api" + "github.com/ipfs/ipfs-cluster/config" "github.com/ipfs/ipfs-cluster/test" cid "github.com/ipfs/go-cid" @@ -32,6 +33,11 @@ func peerManagerClusters(t *testing.T) ([]*Cluster, []*test.IpfsMock, host.Host) } wg.Wait() + // Creat an identity + ident, err := config.NewIdentity() + if err != nil { + t.Fatal(err) + } // Create a config cfg := &Config{} cfg.Default() @@ -40,7 +46,7 @@ func peerManagerClusters(t *testing.T) ([]*Cluster, []*test.IpfsMock, host.Host) cfg.Secret = testingClusterSecret // Create a bootstrapping libp2p host - h, _, dht, err := NewClusterHost(context.Background(), cfg) + h, _, dht, err := NewClusterHost(context.Background(), ident, cfg) if err != nil { t.Fatal(err) }