[67510558] include pluginData as one of the parameter while registration. This will be used for plugin version tracker
diff --git a/apid.go b/apid.go index 3f590e3..fd325d5 100644 --- a/apid.go +++ b/apid.go
@@ -29,6 +29,7 @@ var ( APIDInitializedEvent = systemEvent{"apid initialized"} APIListeningEvent = systemEvent{"api listening"} + PluginVersionTracker []PluginData pluginInitFuncs []PluginInitFunc services Services @@ -67,8 +68,9 @@ ss.events.Emit(SystemEventsSelector, APIDInitializedEvent) } -func RegisterPlugin(plugin PluginInitFunc) { +func RegisterPlugin(plugin PluginInitFunc, pluginData PluginData) { pluginInitFuncs = append(pluginInitFuncs, plugin) + PluginVersionTracker = append(PluginVersionTracker, pluginData) } func InitializePlugins(versionNumber string) {
diff --git a/events/events_test.go b/events/events_test.go index d4d2703..877e385 100644 --- a/events/events_test.go +++ b/events/events_test.go
@@ -267,17 +267,12 @@ }) It("should publish PluginsInitialized event", func(done Done) { - xData := make(map[string]interface{}) - xData["schemaVersion"] = "1.2.3" + dummyPluginData := getDummyPluginDataForTest(0); p := func(s apid.Services) (pd apid.PluginData, err error) { - pd = apid.PluginData{ - Name: "test plugin", - Version: "1.0.0", - ExtraData: xData, - } + pd = dummyPluginData return } - apid.RegisterPlugin(p) + apid.RegisterPlugin(p, dummyPluginData) h := func(event apid.Event) { defer GinkgoRecover() @@ -286,7 +281,7 @@ Expect(len(pie.Plugins)).Should(Equal(1)) p := pie.Plugins[0] - Expect(p.Name).To(Equal("test plugin")) + Expect(p.Name).To(Equal("test plugin 0")) Expect(p.Version).To(Equal("1.0.0")) Expect(p.ExtraData["schemaVersion"]).To(Equal("1.2.3")) @@ -320,7 +315,7 @@ // create and register plugins, listen to shutdown event for i:=0; i<pluginNum; i++ { - apid.RegisterPlugin(createDummyPlugin(i)) + apid.RegisterPlugin(createDummyPlugin(i), getDummyPluginDataForTest(i)) h := func(event apid.Event) { if pie, ok := event.(apid.ShutdownEvent); ok { Expect(pie.Description).Should(Equal("apid is going to shutdown")) @@ -343,17 +338,12 @@ }) It("should be able to read apid version from PluginsInitialized event", func(done Done) { - xData := make(map[string]interface{}) - xData["schemaVersion"] = "1.2.3" + dummyPluginData := getDummyPluginDataForTest(0) p := func(s apid.Services) (pd apid.PluginData, err error) { - pd = apid.PluginData{ - Name: "test plugin", - Version: "1.0.0", - ExtraData: xData, - } + pd = dummyPluginData return } - apid.RegisterPlugin(p) + apid.RegisterPlugin(p,dummyPluginData) apidVersion := "dummy_version" @@ -373,18 +363,21 @@ }) func createDummyPlugin(id int) apid.PluginInitFunc{ - xData := make(map[string]interface{}) - xData["schemaVersion"] = "1.2.3" p := func(s apid.Services) (pd apid.PluginData, err error) { - pd = apid.PluginData{ - Name: "test plugin " + strconv.Itoa(id), - Version: "1.0.0", - ExtraData: xData, - } + pd = getDummyPluginDataForTest(id) return } return p } +func getDummyPluginDataForTest(id int) apid.PluginData { + xData := make(map[string]interface{}) + xData["schemaVersion"] = "1.2.3" + return apid.PluginData{ + Name: "test plugin " + strconv.Itoa(id), + Version: "1.0.0", + ExtraData: xData, + } +} type test_handler struct { description string