Skip to content

Commit

Permalink
feat: add health check and updated helm chart values
Browse files Browse the repository at this point in the history
  • Loading branch information
alessio-cialini committed Oct 17, 2023
1 parent 7aeb5dd commit f6e226a
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 6 deletions.
4 changes: 2 additions & 2 deletions helm/values-dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ microservice-chart:
# https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/Controllers/HostController.cs
livenessProbe:
httpGet:
path: /info
path: /health
port: 80
initialDelaySeconds: 60
failureThreshold: 6
periodSeconds: 10
readinessProbe:
httpGet:
path: /info
path: /health
port: 80
initialDelaySeconds: 60
failureThreshold: 6
Expand Down
4 changes: 2 additions & 2 deletions helm/values-prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ microservice-chart:
# https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/Controllers/HostController.cs
livenessProbe:
httpGet:
path: /info
path: /health
port: 80
initialDelaySeconds: 60
failureThreshold: 6
periodSeconds: 10
readinessProbe:
httpGet:
path: /info
path: /health
port: 80
initialDelaySeconds: 60
failureThreshold: 6
Expand Down
4 changes: 2 additions & 2 deletions helm/values-uat.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ microservice-chart:
# https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/Controllers/HostController.cs
livenessProbe:
httpGet:
path: /info
path: /health
port: 80
initialDelaySeconds: 60
failureThreshold: 6
periodSeconds: 10
readinessProbe:
httpGet:
path: /info
path: /health
port: 80
initialDelaySeconds: 60
failureThreshold: 6
Expand Down
32 changes: 32 additions & 0 deletions src/main/java/it/gov/pagopa/receipt/pdf/generator/Health.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package it.gov.pagopa.receipt.pdf.generator;

import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;

import java.util.Optional;


/**
* Azure Functions with Azure Http trigger.
*/
public class Health {

/**
* This function will be invoked when a Http Trigger occurs
*
* @return response with HttpStatus.OK
*/
@FunctionName("Health")
public HttpResponseMessage run (
@HttpTrigger(name = "HealthTrigger",
methods = {HttpMethod.GET},
route = "health",
authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {

return request.createResponseBuilder(HttpStatus.OK)
.build();
}
}
49 changes: 49 additions & 0 deletions src/test/java/it/gov/pagopa/receipt/pdf/generator/HealthTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package it.gov.pagopa.receipt.pdf.generator;

import com.microsoft.azure.functions.ExecutionContext;
import com.microsoft.azure.functions.HttpRequestMessage;
import com.microsoft.azure.functions.HttpResponseMessage;
import com.microsoft.azure.functions.HttpStatus;
import it.gov.pagopa.receipt.pdf.generator.util.HttpResponseMessageMock;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.stubbing.Answer;

import java.util.Optional;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;

@ExtendWith(MockitoExtension.class)
class HealthTest {

@Mock
ExecutionContext executionContextMock;

@Spy
Health sut;

@Test
void runOK() {
@SuppressWarnings("unchecked")
HttpRequestMessage<Optional<String>> request = mock(HttpRequestMessage.class);

doAnswer((Answer<HttpResponseMessage.Builder>) invocation -> {
HttpStatus status = (HttpStatus) invocation.getArguments()[0];
return new HttpResponseMessageMock.HttpResponseMessageBuilderMock().status(status);
}).when(request).createResponseBuilder(any(HttpStatus.class));

// test execution
HttpResponseMessage response = sut.run(request, executionContextMock);

// test assertion
assertNotNull(response);
assertEquals(HttpStatus.OK, response.getStatus());
}
}

0 comments on commit f6e226a

Please sign in to comment.