@@ -70,39 +70,41 @@ func TestGetRetrySettings(t *testing.T) {
7070 desc string
7171 storage storage.Extension
7272 numStorages int
73- storageEnabled bool
73+ storageIndex int
7474 expectedError error
7575 getClientError error
7676 }{
7777 {
78- desc : "no storage selected" ,
79- numStorages : 0 ,
80- expectedError : errNoStorageClient ,
78+ desc : "obtain storage extension by name" ,
79+ numStorages : 2 ,
80+ storageIndex : 0 ,
81+ expectedError : nil ,
8182 },
8283 {
83- desc : "obtain default storage extension" ,
84- numStorages : 1 ,
85- storageEnabled : true ,
86- expectedError : nil ,
84+ desc : "fail on not existing storage extension" ,
85+ numStorages : 2 ,
86+ storageIndex : 100 ,
87+ expectedError : errNoStorageClient ,
8788 },
8889 {
89- desc : "fail on obtaining default storage extension" ,
90- numStorages : 2 ,
91- storageEnabled : true ,
92- expectedError : errMultipleStorageClients ,
90+ desc : "invalid extension type " ,
91+ numStorages : 2 ,
92+ storageIndex : 100 ,
93+ expectedError : errNoStorageClient ,
9394 },
9495 {
9596 desc : "fail on error getting storage client from extension" ,
9697 numStorages : 1 ,
97- storageEnabled : true ,
98+ storageIndex : 0 ,
9899 expectedError : getStorageClientError ,
99100 getClientError : getStorageClientError ,
100101 },
101102 }
102103
103104 for _ , tC := range testCases {
104105 t .Run (tC .desc , func (t * testing.T ) {
105- // prepare
106+ storageID := config .NewComponentIDWithName ("file_storage" , strconv .Itoa (tC .storageIndex ))
107+
106108 var extensions = map [config.ComponentID ]component.Extension {}
107109 for i := 0 ; i < tC .numStorages ; i ++ {
108110 extensions [config .NewComponentIDWithName ("file_storage" , strconv .Itoa (i ))] = & mockStorageExtension {GetClientError : tC .getClientError }
@@ -111,7 +113,7 @@ func TestGetRetrySettings(t *testing.T) {
111113 ownerID := config .NewComponentID ("foo_exporter" )
112114
113115 // execute
114- client , err := getStorageClient (context .Background (), host , ownerID , config .TracesDataType )
116+ client , err := toStorageClient (context .Background (), storageID , host , ownerID , config .TracesDataType )
115117
116118 // verify
117119 if tC .expectedError != nil {
@@ -125,6 +127,29 @@ func TestGetRetrySettings(t *testing.T) {
125127 }
126128}
127129
130+ func TestInvalidStorageExtensionType (t * testing.T ) {
131+ storageID := config .NewComponentIDWithName ("extension" , "extension" )
132+
133+ // make a test extension
134+ factory := componenttest .NewNopExtensionFactory ()
135+ extConfig := factory .CreateDefaultConfig ()
136+ settings := componenttest .NewNopExtensionCreateSettings ()
137+ extension , err := factory .CreateExtension (context .Background (), settings , extConfig )
138+ assert .NoError (t , err )
139+ var extensions = map [config.ComponentID ]component.Extension {
140+ storageID : extension ,
141+ }
142+ host := & mockHost {ext : extensions }
143+ ownerID := config .NewComponentID ("foo_exporter" )
144+
145+ // execute
146+ client , err := toStorageClient (context .Background (), storageID , host , ownerID , config .TracesDataType )
147+
148+ // we should get an error about the extension type
149+ assert .ErrorIs (t , err , errWrongExtensionType )
150+ assert .Nil (t , client )
151+ }
152+
128153// if requeueing is enabled, we eventually retry even if we failed at first
129154func TestQueuedRetry_RequeuingEnabled (t * testing.T ) {
130155 qCfg := NewDefaultQueueSettings ()
@@ -182,12 +207,13 @@ func TestQueuedRetryPersistenceEnabled(t *testing.T) {
182207 t .Cleanup (func () { require .NoError (t , tt .Shutdown (context .Background ())) })
183208
184209 qCfg := NewDefaultQueueSettings ()
185- qCfg .PersistentStorageEnabled = true // enable persistence
210+ storageID := config .NewComponentIDWithName ("file_storage" , "storage" )
211+ qCfg .StorageID = & storageID // enable persistence
186212 rCfg := NewDefaultRetrySettings ()
187213 be := newBaseExporter (& defaultExporterCfg , tt .ToExporterCreateSettings (), fromOptions (WithRetry (rCfg ), WithQueue (qCfg )), "" , nopRequestUnmarshaler ())
188214
189215 var extensions = map [config.ComponentID ]component.Extension {
190- config . NewComponentIDWithName ( "file_storage" , "storage" ) : & mockStorageExtension {},
216+ storageID : & mockStorageExtension {},
191217 }
192218 host := & mockHost {ext : extensions }
193219
@@ -203,12 +229,13 @@ func TestQueuedRetryPersistenceEnabledStorageError(t *testing.T) {
203229 t .Cleanup (func () { require .NoError (t , tt .Shutdown (context .Background ())) })
204230
205231 qCfg := NewDefaultQueueSettings ()
206- qCfg .PersistentStorageEnabled = true // enable persistence
232+ storageID := config .NewComponentIDWithName ("file_storage" , "storage" )
233+ qCfg .StorageID = & storageID // enable persistence
207234 rCfg := NewDefaultRetrySettings ()
208235 be := newBaseExporter (& defaultExporterCfg , tt .ToExporterCreateSettings (), fromOptions (WithRetry (rCfg ), WithQueue (qCfg )), "" , nopRequestUnmarshaler ())
209236
210237 var extensions = map [config.ComponentID ]component.Extension {
211- config . NewComponentIDWithName ( "file_storage" , "storage" ) : & mockStorageExtension {GetClientError : storageError },
238+ storageID : & mockStorageExtension {GetClientError : storageError },
212239 }
213240 host := & mockHost {ext : extensions }
214241
0 commit comments