Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
### Bugs Fixed

- Fixes issue where credential from Azure Spring global properties was being overridden.
- Fixes bug where Http Response wasn't checked before trying to use response.
- Fixes Tracing info for ContainerApp
Comment thread
saragluna marked this conversation as resolved.

### Other Changes

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,12 @@ ConfigurationSetting getWatchKey(String key, String label)
this.failedAttempts = 0;
return watchKey;
} catch (HttpResponseException e) {
int statusCode = e.getResponse().getStatusCode();
if (e.getResponse() != null) {
int statusCode = e.getResponse().getStatusCode();

if (statusCode == 429 || statusCode == 408 || statusCode >= 500) {
throw new AppConfigurationStatusException(e.getMessage(), e.getResponse(), e.getValue());
if (statusCode == 429 || statusCode == 408 || statusCode >= 500) {
throw new AppConfigurationStatusException(e.getMessage(), e.getResponse(), e.getValue());
}
}
throw e;
} catch (Exception e) { // TODO (mametcal) This should be an UnknownHostException, but currently it isn't
Expand Down Expand Up @@ -123,10 +125,12 @@ List<ConfigurationSetting> listSettings(SettingSelector settingSelector)
settings.forEach(setting -> configurationSettings.add(NormalizeNull.normalizeNullLabel(setting)));
return configurationSettings;
} catch (HttpResponseException e) {
int statusCode = e.getResponse().getStatusCode();
if (e.getResponse() != null) {
int statusCode = e.getResponse().getStatusCode();

if (statusCode == 429 || statusCode == 408 || statusCode >= 500) {
throw new AppConfigurationStatusException(e.getMessage(), e.getResponse(), e.getValue());
if (statusCode == 429 || statusCode == 408 || statusCode >= 500) {
throw new AppConfigurationStatusException(e.getMessage(), e.getResponse(), e.getValue());
}
}
throw e;
} catch (Exception e) { // TODO (mametcal) This should be an UnknownHostException, but currently it isn't
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public enum HostType {
/**
* Host is Container App
*/
CONTAINER_APP("ContainerApps");
CONTAINER_APP("ContainerApp");

private final String text;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
Expand Down Expand Up @@ -121,6 +122,36 @@ public void cleanup() throws Exception {
MockitoAnnotations.openMocks(this).close();
}

@Test
public void overrideTest() {
String[] labels = {"test"};
AppConfigurationFeatureManagementPropertySource propertySourceOverride = new AppConfigurationFeatureManagementPropertySource(TEST_STORE_NAME, clientMock, "/test/",
labels);
when(featureListMock.iterator()).thenReturn(FEATURE_ITEMS.iterator());
when(clientMock.listSettings(Mockito.any()))
.thenReturn(featureListMock).thenReturn(featureListMock);
when(clientMock.getTracingInfo()).thenReturn(new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration()));
featureFlagStore.setEnabled(true);

propertySourceOverride.initProperties();

Map<Integer, FeatureFlagFilter> filters = new HashMap<>();
FeatureFlagFilter ffec = new FeatureFlagFilter("TestFilter");
filters.put(0, ffec);
Feature gamma = new Feature();
gamma.setKey("Gamma");
filters = new HashMap<>();
ffec = new FeatureFlagFilter("TestFilter");
Map<String, Object> parameters = new LinkedHashMap<>();
parameters.put("key", "value");
ffec.setParameters(parameters);
filters.put(0, ffec);
gamma.setEnabledFor(filters);

assertEquals(gamma.getKey(),
((Feature) propertySourceOverride.getProperty(FEATURE_MANAGEMENT_KEY + "Gamma")).getKey());
}

@Test
public void testFeatureFlagCanBeInitedAndQueried() {
when(featureListMock.iterator()).thenReturn(FEATURE_ITEMS.iterator());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.azure.data.appconfiguration.ConfigurationClient;
import com.azure.data.appconfiguration.models.ConfigurationSetting;
import com.azure.data.appconfiguration.models.SettingSelector;
import com.azure.identity.CredentialUnavailableException;
import com.azure.spring.cloud.appconfiguration.config.implementation.http.policy.TracingInfo;

public class AppConfigurationReplicaClientTest {
Expand Down Expand Up @@ -101,6 +102,34 @@ public void listSettingsTest() {
assertThrows(HttpResponseException.class, () -> client.listSettings(new SettingSelector()));
}

@Test
public void listSettingsNoCredentialTest() {
AppConfigurationReplicaClient client = new AppConfigurationReplicaClient(endpoint, clientMock,
new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration()));

List<ConfigurationSetting> configurations = new ArrayList<>();

when(clientMock.listConfigurationSettings(Mockito.any()))
.thenThrow(new CredentialUnavailableException("No Credential"));
when(settingsMock.iterator()).thenReturn(configurations.iterator());

assertThrows(CredentialUnavailableException.class, () -> client.listSettings(new SettingSelector()));
}

@Test
public void getWatchNoCredentialTest() {
AppConfigurationReplicaClient client = new AppConfigurationReplicaClient(endpoint, clientMock,
new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration()));

List<ConfigurationSetting> configurations = new ArrayList<>();

when(clientMock.getConfigurationSetting(Mockito.anyString(), Mockito.anyString()))
.thenThrow(new CredentialUnavailableException("No Credential"));
when(settingsMock.iterator()).thenReturn(configurations.iterator());

assertThrows(CredentialUnavailableException.class, () -> client.getWatchKey("key", "label"));
}

@Test
public void backoffTest() {
AppConfigurationReplicaClient client = new AppConfigurationReplicaClient(endpoint, clientMock,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,4 +153,12 @@ public void updateSyncTokenTest() {

verify(replicaClient1, times(1)).updateSyncToken(Mockito.eq(fakeToken));
}

@Test
public void getAvailableClientsNotLoadedTest() {
ConnectionManager manager = new ConnectionManager(clientBuilderMock, configStore);

assertEquals(0, manager.getAvailableClients().size());
assertEquals(AppConfigurationStoreHealth.NOT_LOADED, manager.getHealth());
}
}