Skip to content
Snippets Groups Projects
Commit 500a2b07 authored by Neelesh Thakur's avatar Neelesh Thakur
Browse files

comments

parent fc6e2105
No related branches found
No related tags found
1 merge request!348add subscriber notification request request/dependency logging
Pipeline #167111 failed
...@@ -19,6 +19,5 @@ import org.opengroup.osdu.core.common.model.notification.Subscription; ...@@ -19,6 +19,5 @@ import org.opengroup.osdu.core.common.model.notification.Subscription;
public interface ISubscriberNotificationRequestLogger { public interface ISubscriberNotificationRequestLogger {
default void log(String notificationId, Subscription subscription, HttpResponse response) { void log(String notificationId, Subscription subscription, HttpResponse response);
}
} }
// Copyright © Schlumberger
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package org.opengroup.osdu.notification.utils;
import org.opengroup.osdu.core.common.http.HttpResponse;
import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
import org.opengroup.osdu.core.common.model.http.Request;
import org.opengroup.osdu.core.common.model.notification.Subscription;
import org.opengroup.osdu.notification.provider.interfaces.ISubscriberNotificationRequestLogger;
import org.springframework.stereotype.Component;
import java.time.Duration;
@Component
public class DefaultSubscriberNotificationRequestLogger implements ISubscriberNotificationRequestLogger {
private JaxRsDpsLog logger;
public DefaultSubscriberNotificationRequestLogger(JaxRsDpsLog logger) {
this.logger = logger;
}
public void log(String notificationId, Subscription subscription, HttpResponse response) {
this.logger.request("subscriber.request", Request.builder()
.requestMethod("POST")
.latency(Duration.ofMillis(response.getLatency()))
.requestUrl(subscription.getPushEndpoint())
.Status(response.getResponseCode())
.build());
if (!response.isSuccessCode()) {
this.logger.error(String.format("Subscriber notification request failed. notificationId=%s subscriptionId=%s createdBy=%s response=%s", notificationId, subscription.getId(), subscription.getCreatedBy(), response.getBody()));
}
}
}
// Copyright © Schlumberger
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package org.opengroup.osdu.notification.utils;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.opengroup.osdu.core.common.http.HttpResponse;
import org.opengroup.osdu.core.common.logging.JaxRsDpsLog;
import org.opengroup.osdu.core.common.model.http.Request;
import org.opengroup.osdu.core.common.model.notification.Subscription;
import java.time.Duration;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
@RunWith(MockitoJUnitRunner.class)
public class DefaultSubscriberNotificationRequestLoggerTest {
private final HttpResponse response = new HttpResponse();
private static final String NOTIFICATION_ID = "test-notification-id";
private static Subscription subscription;
@Mock
private JaxRsDpsLog logger;
@InjectMocks
private DefaultSubscriberNotificationRequestLogger sut;
@BeforeClass
public static void setup() {
subscription = new Subscription();
subscription.setName("hamc_test_subscription");
subscription.setPushEndpoint("http://challenge");
subscription.setDescription("Description");
subscription.setTopic("records-changed");
subscription.setNotificationId(NOTIFICATION_ID);
subscription.setId("id_1");
subscription.setCreatedBy("test@test.com");
}
@Test
public void log_notifySubscriber_success() {
response.setResponseCode(200);
this.sut.log(NOTIFICATION_ID, subscription, response);
verify(this.logger, times(1)).request("subscriber.request", Request.builder().requestUrl("http://challenge").requestMethod("POST").latency(Duration.ZERO).Status(200).ip("").build());
verifyNoMoreInteractions(this.logger);
}
@Test
public void log_notifySubscriber_failure() {
response.setResponseCode(403);
response.setBody("unauthorized");
this.sut.log(NOTIFICATION_ID, subscription, response);
verify(this.logger, times(1)).request("subscriber.request", Request.builder().requestUrl("http://challenge").requestMethod("POST").latency(Duration.ZERO).Status(403).ip("").build());
verify(this.logger, times(1)).error("Subscriber notification request failed. notificationId=test-notification-id subscriptionId=id_1 createdBy=test@test.com response=unauthorized");
}
}
...@@ -19,9 +19,11 @@ import org.opengroup.osdu.azure.logging.DependencyLoggingOptions; ...@@ -19,9 +19,11 @@ import org.opengroup.osdu.azure.logging.DependencyLoggingOptions;
import org.opengroup.osdu.core.common.http.HttpResponse; import org.opengroup.osdu.core.common.http.HttpResponse;
import org.opengroup.osdu.core.common.model.notification.Subscription; import org.opengroup.osdu.core.common.model.notification.Subscription;
import org.opengroup.osdu.notification.provider.interfaces.ISubscriberNotificationRequestLogger; import org.opengroup.osdu.notification.provider.interfaces.ISubscriberNotificationRequestLogger;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
@Primary
public class SubscriberNotificationRequestLogger implements ISubscriberNotificationRequestLogger { public class SubscriberNotificationRequestLogger implements ISubscriberNotificationRequestLogger {
private final String DEPENDENCY_TYPE = "Notification"; private final String DEPENDENCY_TYPE = "Notification";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment