Skip to content

Commit

Permalink
Merge pull request #990 from Microsoft/feature/add-setlogurl-for-1ds
Browse files Browse the repository at this point in the history
Update setlogurl method for GoLocal support
  • Loading branch information
MatkovIvan committed Mar 16, 2019
2 parents b22809d + f02a977 commit 6b2d512
Show file tree
Hide file tree
Showing 7 changed files with 137 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@
import com.microsoft.appcenter.sasquatch.listeners.SasquatchPushListener;
import com.microsoft.appcenter.utils.async.AppCenterConsumer;

import java.lang.reflect.Method;
import java.util.UUID;

public class MainActivity extends AppCompatActivity {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -505,6 +505,9 @@ public void onClick(DialogInterface dialog, int which) {
if (Patterns.WEB_URL.matcher(input.getText().toString()).matches()) {
String url = input.getText().toString();
setKeyValue(LOG_URL_KEY, url);
if (!TextUtils.isEmpty(url)) {
AppCenter.setLogUrl(url);
}
toastUrlChange(url);
} else if (input.getText().toString().isEmpty()) {
setDefaultUrl();
Expand All @@ -519,6 +522,9 @@ public void onClick(DialogInterface dialog, int which) {
@Override
public void onClick(DialogInterface dialog, int which) {
setDefaultUrl();
if (!TextUtils.isEmpty(getString(R.string.log_url))) {
AppCenter.setLogUrl(getString(R.string.log_url));
}
preference.setSummary(MainActivity.sSharedPreferences.getString(LOG_URL_KEY, defaultLogUrlDisplay));
}
})
Expand Down
22 changes: 19 additions & 3 deletions sdk/appcenter/src/main/java/com/microsoft/appcenter/AppCenter.java
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,11 @@ public class AppCenter {
*/
private DefaultAppCenterFuture<Boolean> mSetMaxStorageSizeFuture;

/**
* Redirect selected traffic to One Collector.
*/
private OneCollectorChannelListener mOneCollectorChannelListener;

/**
* Get unique instance.
*
Expand Down Expand Up @@ -499,7 +504,13 @@ private synchronized void setInstanceLogUrl(final String logUrl) {

@Override
public void run() {
mChannel.setLogUrl(logUrl);
if (mAppSecret != null) {
AppCenterLog.info(LOG_TAG, "The log url of App Center endpoint has been changed to " + logUrl);
mChannel.setLogUrl(logUrl);
} else {
AppCenterLog.info(LOG_TAG, "The log url of One Collector endpoint has been changed to " + logUrl);
mOneCollectorChannelListener.setLogUrl(logUrl);
}
}
});
}
Expand Down Expand Up @@ -761,10 +772,15 @@ private void finishConfiguration(boolean configureFromApp) {
}
mChannel.setEnabled(enabled);
mChannel.addGroup(CORE_GROUP, DEFAULT_TRIGGER_COUNT, DEFAULT_TRIGGER_INTERVAL, DEFAULT_TRIGGER_MAX_PARALLEL_REQUESTS, null, null);
mOneCollectorChannelListener = new OneCollectorChannelListener(mApplication, mChannel, mLogSerializer, IdHelper.getInstallId());
if (mLogUrl != null) {
mChannel.setLogUrl(mLogUrl);
if (mAppSecret != null) {
mChannel.setLogUrl(mLogUrl);
} else {
mOneCollectorChannelListener.setLogUrl(mLogUrl);
}
}
mChannel.addListener(new OneCollectorChannelListener(mApplication, mChannel, mLogSerializer, IdHelper.getInstallId()));
mChannel.addListener(mOneCollectorChannelListener);

/* Disable listening network if we start while being disabled. */
if (!enabled) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,24 @@ public class OneCollectorChannelListener extends AbstractChannelListener {
* @param installId installId.
*/
public OneCollectorChannelListener(@NonNull Context context, @NonNull Channel channel, @NonNull LogSerializer logSerializer, @NonNull UUID installId) {
this(new OneCollectorIngestion(context, logSerializer), channel, logSerializer, installId);
}

@VisibleForTesting
OneCollectorChannelListener(@NonNull OneCollectorIngestion ingestion, @NonNull Channel channel, @NonNull LogSerializer logSerializer, @NonNull UUID installId) {
mChannel = channel;
mLogSerializer = logSerializer;
mInstallId = installId;
mIngestion = new OneCollectorIngestion(context, mLogSerializer);
mIngestion = ingestion;
}

/**
* Update log URL.
*
* @param logUrl log URL.
*/
public void setLogUrl(@NonNull String logUrl) {
mIngestion.setLogUrl(logUrl);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import android.content.Context;

import com.microsoft.appcenter.channel.Channel;
import com.microsoft.appcenter.channel.OneCollectorChannelListener;
import com.microsoft.appcenter.utils.AppCenterLog;

import org.junit.Test;
Expand All @@ -28,9 +29,11 @@
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
import static org.mockito.Matchers.isNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.powermock.api.mockito.PowerMockito.verifyStatic;
import static org.powermock.api.mockito.PowerMockito.whenNew;

public class AppCenterLibraryTest extends AbstractAppCenterTest {

Expand Down Expand Up @@ -379,4 +382,37 @@ public void startFromAppDoesNotEnableStartingUnsupportedServicesFromLibrary() {
/* It should work now. */
verify(AnotherDummyService.getInstance()).onStarted(any(Context.class), any(Channel.class), eq(DUMMY_APP_SECRET), eq(DUMMY_TRANSMISSION_TARGET_TOKEN), eq(true));
}

@Test
public void setLogUrlFromLibraryThenApp() throws Exception {
OneCollectorChannelListener listener = mock(OneCollectorChannelListener.class);
whenNew(OneCollectorChannelListener.class).withAnyArguments().thenReturn(listener);

/* Change log URL before start. */
String logUrl = "http://mock";
AppCenter.setLogUrl(logUrl);

/* No effect for now. */
verify(listener, never()).setLogUrl(logUrl);

/* Start should propagate the log URL without App Secret. */
AppCenter.startFromLibrary(mApplication, DummyService.class);
verify(listener).setLogUrl(logUrl);

/* Change it after, should work immediately. */
logUrl = "http://mock2";
AppCenter.setLogUrl(logUrl);
verify(listener).setLogUrl(logUrl);
verify(mChannel, never()).setLogUrl(anyString());

/* Start from application with app secret. */
AppCenter.start(mApplication, DUMMY_APP_SECRET, DummyService.class);
verify(mChannel, never()).setLogUrl(anyString());

/* If we set log url now, it will apply to AppCenter from now on. */
logUrl = "http://mock3";
AppCenter.setLogUrl(logUrl);
verify(listener, never()).setLogUrl(logUrl);
verify(mChannel).setLogUrl(logUrl);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,6 @@ public void startAppSecretThenStartWithTargetTokenTest() {
verify(mStartServiceLog).setServices(eq(services));
}


@Test
public void configureTwiceTest() {
AppCenter.configure(mApplication, DUMMY_APP_SECRET);
Expand Down Expand Up @@ -836,7 +835,9 @@ public void doNotSetDefaultLogLevel() {
}

@Test
public void setLogUrl() {
public void setLogUrl() throws Exception {
OneCollectorChannelListener listener = mock(OneCollectorChannelListener.class);
whenNew(OneCollectorChannelListener.class).withAnyArguments().thenReturn(listener);

/* Change log URL before start. */
String logUrl = "http://mock";
Expand All @@ -853,6 +854,53 @@ public void setLogUrl() {
logUrl = "http://mock2";
AppCenter.setLogUrl(logUrl);
verify(mChannel).setLogUrl(logUrl);
verify(listener, never()).setLogUrl(anyString());
}

@Test
public void setOneCollectorUrlWhenTargetTokenUsed() throws Exception {
OneCollectorChannelListener listener = mock(OneCollectorChannelListener.class);
whenNew(OneCollectorChannelListener.class).withAnyArguments().thenReturn(listener);

/* Change log URL before start. */
String logUrl = "http://mock";
AppCenter.setLogUrl(logUrl);

/* No effect for now. */
verify(listener, never()).setLogUrl(logUrl);

/* Start should propagate the log URL without App Secret. */
AppCenter.start(mApplication, DUMMY_TARGET_TOKEN_STRING, DummyService.class);
verify(listener).setLogUrl(logUrl);

/* Change it after, should work immediately. */
logUrl = "http://mock2";
AppCenter.setLogUrl(logUrl);
verify(listener).setLogUrl(logUrl);
verify(mChannel, never()).setLogUrl(anyString());
}

@Test
public void setOneCollectorUrlWhenNoSecretUsed() throws Exception {
OneCollectorChannelListener listener = mock(OneCollectorChannelListener.class);
whenNew(OneCollectorChannelListener.class).withAnyArguments().thenReturn(listener);

/* Change log URL before start. */
String logUrl = "http://mock";
AppCenter.setLogUrl(logUrl);

/* No effect for now. */
verify(listener, never()).setLogUrl(logUrl);

/* Start should propagate the log URL without App Secret. */
AppCenter.start(mApplication, DummyService.class);
verify(listener).setLogUrl(logUrl);

/* Change it after, should work immediately. */
logUrl = "http://mock2";
AppCenter.setLogUrl(logUrl);
verify(listener).setLogUrl(logUrl);
verify(mChannel, never()).setLogUrl(anyString());
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -304,4 +304,15 @@ public void resumeCorrespondingGroup() {
listener.onResumed(TEST_GROUP + ONE_COLLECTOR_GROUP_NAME_SUFFIX, null);
verifyNoMoreInteractions(channel);
}

@Test
public void setLogUrl() {
OneCollectorIngestion ingestion = mock(OneCollectorIngestion.class);
OneCollectorChannelListener listener = new OneCollectorChannelListener(ingestion, mock(Channel.class), mock(LogSerializer.class), UUIDUtils.randomUUID());

/* Set the log url. */
String logUrl = "http://mock";
listener.setLogUrl(logUrl);
verify(ingestion).setLogUrl(logUrl);
}
}

0 comments on commit 6b2d512

Please sign in to comment.