Merge pull request #7 from 30x/XAPID-863
add version#, send apid version# in PluginsInitializedEvent
diff --git a/apid.go b/apid.go
index a7429b5..ea4eb8d 100644
--- a/apid.go
+++ b/apid.go
@@ -57,11 +57,12 @@
pluginInitFuncs = append(pluginInitFuncs, plugin)
}
-func InitializePlugins() {
+func InitializePlugins(versionNumber string) {
log := Log()
log.Debugf("Initializing %d plugins...", len(pluginInitFuncs))
pie := PluginsInitializedEvent{
Description: "plugins initialized",
+ ApidVersion: versionNumber,
}
for _, pif := range pluginInitFuncs {
pluginData, err := pif(services)
diff --git a/events/events_test.go b/events/events_test.go
index 8c338b6..1bdcd54 100644
--- a/events/events_test.go
+++ b/events/events_test.go
@@ -293,7 +293,7 @@
}
apid.Events().ListenFunc(apid.SystemEventsSelector, h)
- apid.InitializePlugins()
+ apid.InitializePlugins("")
})
It("shutdown event should be emitted and listened successfully", func(done Done) {
@@ -333,7 +333,7 @@
}
- apid.InitializePlugins()
+ apid.InitializePlugins("")
apid.ShutdownPluginsAndWait()
@@ -345,6 +345,36 @@
close(done)
})
+
+ It("should be able to read apid version from PluginsInitialized event", func(done Done) {
+ 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",
+ Version: "1.0.0",
+ ExtraData: xData,
+ }
+ return
+ }
+ apid.RegisterPlugin(p)
+
+ apidVersion := "dummy_version"
+
+ h := func(event apid.Event) {
+ defer GinkgoRecover()
+
+ if pie, ok := event.(apid.PluginsInitializedEvent); ok {
+
+ apid.Events().Close()
+ Expect(pie.ApidVersion).To(Equal(apidVersion))
+ close(done)
+ }
+ }
+ apid.Events().ListenFunc(apid.SystemEventsSelector, h)
+
+ apid.InitializePlugins(apidVersion)
+ })
})
func createDummyPlugin(id int) apid.PluginInitFunc{
diff --git a/events_service.go b/events_service.go
index c11b358..f7156a5 100644
--- a/events_service.go
+++ b/events_service.go
@@ -48,7 +48,8 @@
type PluginsInitializedEvent struct {
Description string
// using slice member will make the type "PluginsInitializedEvent" uncomparable
- Plugins []PluginData
+ Plugins []PluginData
+ ApidVersion string
}
type PluginData struct {