Search in sources :

Example 1 with Event

use of io.fabric8.kubernetes.api.model.events.v1.Event in project che-server by eclipse-che.

the class KubernetesDeploymentsTest method setUp.

@BeforeMethod
public void setUp() throws Exception {
    lenient().when(clientFactory.create(anyString())).thenReturn(kubernetesClient);
    lenient().when(pod.getStatus()).thenReturn(status);
    lenient().when(pod.getMetadata()).thenReturn(metadata);
    lenient().when(metadata.getName()).thenReturn(POD_NAME);
    // Model DSL: client.pods().inNamespace(...).withName(...).get().getMetadata().getName();
    lenient().doReturn(podsMixedOperation).when(kubernetesClient).pods();
    lenient().doReturn(podsNamespaceOperation).when(podsMixedOperation).inNamespace(anyString());
    lenient().doReturn(podResource).when(podsNamespaceOperation).withName(anyString());
    lenient().doReturn(pod).when(podResource).get();
    // Model DSL:
    // client.apps().deployments(...).inNamespace(...).withName(...).get().getMetadata().getName();
    lenient().doReturn(apps).when(kubernetesClient).apps();
    lenient().doReturn(deploymentsMixedOperation).when(apps).deployments();
    lenient().doReturn(deploymentsNamespaceOperation).when(deploymentsMixedOperation).inNamespace(anyString());
    lenient().doReturn(deploymentResource).when(deploymentsNamespaceOperation).withName(anyString());
    lenient().doReturn(deployment).when(deploymentResource).get();
    lenient().doReturn(deploymentMetadata).when(deployment).getMetadata();
    lenient().doReturn(deploymentSpec).when(deployment).getSpec();
    // Model DSL: client.events().inNamespace(...).watch(...)
    // event.getInvolvedObject().getKind()
    lenient().when(kubernetesClient.v1()).thenReturn(v1APIGroupDSL);
    lenient().when(v1APIGroupDSL.events()).thenReturn(eventMixedOperation);
    lenient().when(eventMixedOperation.inNamespace(any())).thenReturn(eventNamespaceMixedOperation);
    lenient().when(event.getInvolvedObject()).thenReturn(objectReference);
    lenient().when(event.getMetadata()).thenReturn(new ObjectMeta());
    // Workaround to ensure mocked event happens 'after' watcher initialisation.
    Date futureDate = new Date();
    futureDate.setYear(3000);
    lenient().when(event.getLastTimestamp()).thenReturn(PodEvents.convertDateToEventTimestamp(futureDate));
    kubernetesDeployments = new KubernetesDeployments("namespace", "workspace123", clientFactory, executor);
    serverMock = new KubernetesServer(true, true);
    serverMock.before();
}
Also used : ObjectMeta(io.fabric8.kubernetes.api.model.ObjectMeta) KubernetesServer(io.fabric8.kubernetes.client.server.mock.KubernetesServer) Date(java.util.Date) BeforeMethod(org.testng.annotations.BeforeMethod)

Example 2 with Event

use of io.fabric8.kubernetes.api.model.events.v1.Event in project che-server by eclipse-che.

the class KubernetesDeploymentsTest method shouldFallbackToFirstTimeStampIfLastTimeStampIsNull.

@Test
public void shouldFallbackToFirstTimeStampIfLastTimeStampIsNull() throws InfrastructureException {
    // Given
    when(objectReference.getKind()).thenReturn(POD_OBJECT_KIND);
    kubernetesDeployments.watchEvents(podEventHandler);
    verify(eventNamespaceMixedOperation).watch(eventWatcherCaptor.capture());
    Watcher<Event> watcher = eventWatcherCaptor.getValue();
    Event event = mock(Event.class);
    when(event.getInvolvedObject()).thenReturn(objectReference);
    when(event.getMetadata()).thenReturn(new ObjectMeta());
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.YEAR, 1);
    Date nextYear = cal.getTime();
    when(event.getFirstTimestamp()).thenReturn(PodEvents.convertDateToEventTimestamp(nextYear));
    when(event.getLastTimestamp()).thenReturn(null);
    // When
    watcher.eventReceived(Watcher.Action.ADDED, event);
    // Then
    verify(event, times(1)).getLastTimestamp();
    verify(event, times(1)).getFirstTimestamp();
    ArgumentCaptor<PodEvent> captor = ArgumentCaptor.forClass(PodEvent.class);
    verify(podEventHandler).handle(captor.capture());
    PodEvent podEvent = captor.getValue();
    assertEquals(podEvent.getLastTimestamp(), PodEvents.convertDateToEventTimestamp(nextYear));
}
Also used : ObjectMeta(io.fabric8.kubernetes.api.model.ObjectMeta) Calendar(java.util.Calendar) Event(io.fabric8.kubernetes.api.model.Event) PodEvent(org.eclipse.che.workspace.infrastructure.kubernetes.namespace.event.PodEvent) PodEvent(org.eclipse.che.workspace.infrastructure.kubernetes.namespace.event.PodEvent) Date(java.util.Date) Test(org.testng.annotations.Test)

Example 3 with Event

use of io.fabric8.kubernetes.api.model.events.v1.Event in project che-server by eclipse-che.

the class PVCSubPathHelperTest method newEvent.

private static Event newEvent(String reason) {
    Event event = new Event();
    event.setReason(reason);
    return event;
}
Also used : Event(io.fabric8.kubernetes.api.model.Event) PodEvent(org.eclipse.che.workspace.infrastructure.kubernetes.namespace.event.PodEvent)

Example 4 with Event

use of io.fabric8.kubernetes.api.model.events.v1.Event in project che-server by eclipse-che.

the class KubernetesInternalRuntime method storeStartingMachine.

/**
 * Puts createdPod in the {@code machines} map and sends the starting event for this machine
 */
private void storeStartingMachine(Pod createdPod, ObjectMeta toCreateMeta, Map<String, InternalMachineConfig> machineConfigs, ServerResolver serverResolver) throws InfrastructureException {
    final String workspaceId = getContext().getIdentity().getWorkspaceId();
    for (Container container : createdPod.getSpec().getContainers()) {
        String machineName = Names.machineName(toCreateMeta, container);
        LOG.debug("Creating machine '{}' in workspace '{}'", machineName, workspaceId);
        // Sometimes we facing NPE trying to retrieve machine config. Possible names mismatch. Need to
        // get more info on that cases.
        InternalMachineConfig machineConfig = Optional.ofNullable(machineConfigs.get(machineName)).orElseThrow(() -> {
            LOG.error("Workspace '{}' start failed. Machine with name '{}' requested but not found in configs map. Present machines are: {}.", workspaceId, machineName, String.join(",", machineConfigs.keySet()));
            return new InfrastructureException(format("Unable to start the workspace '%s' due to an internal inconsistency while composing the workspace runtime." + "Please report a bug. If possible, include the details from Che devfile and server log in bug report (your admin can help with that)", workspaceId));
        });
        machines.put(getContext().getIdentity(), new KubernetesMachineImpl(workspaceId, machineName, createdPod.getMetadata().getName(), container.getName(), MachineStatus.STARTING, machineConfig.getAttributes(), serverResolver.resolve(machineName)));
        eventPublisher.sendStartingEvent(machineName, getContext().getIdentity());
    }
}
Also used : InternalMachineConfig(org.eclipse.che.api.workspace.server.spi.environment.InternalMachineConfig) Container(io.fabric8.kubernetes.api.model.Container) KubernetesMachineImpl(org.eclipse.che.workspace.infrastructure.kubernetes.model.KubernetesMachineImpl) InfrastructureException(org.eclipse.che.api.workspace.server.spi.InfrastructureException) InternalInfrastructureException(org.eclipse.che.api.workspace.server.spi.InternalInfrastructureException)

Example 5 with Event

use of io.fabric8.kubernetes.api.model.events.v1.Event in project java-operator-sdk by java-operator-sdk.

the class EventProcessorTest method eventAlreadyUnderProcessing.

private ResourceID eventAlreadyUnderProcessing() {
    when(reconciliationDispatcherMock.handleExecution(any())).then((Answer<PostExecutionControl>) invocationOnMock -> {
        Thread.sleep(FAKE_CONTROLLER_EXECUTION_DURATION);
        return PostExecutionControl.defaultDispatch();
    });
    Event event = prepareCREvent();
    eventProcessor.handleEvent(event);
    return event.getRelatedCustomResourceID();
}
Also used : BeforeEach(org.junit.jupiter.api.BeforeEach) GenericRetry(io.javaoperatorsdk.operator.processing.retry.GenericRetry) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) LoggerFactory(org.slf4j.LoggerFactory) ResourceEvent(io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEvent) TestUtils.testCustomResource(io.javaoperatorsdk.operator.TestUtils.testCustomResource) Mockito.spy(org.mockito.Mockito.spy) Answer(org.mockito.stubbing.Answer) ControllerResourceEventSource(io.javaoperatorsdk.operator.processing.event.source.controller.ControllerResourceEventSource) TestCustomResource(io.javaoperatorsdk.operator.sample.simple.TestCustomResource) Mockito.timeout(org.mockito.Mockito.timeout) ArgumentCaptor(org.mockito.ArgumentCaptor) TimerEventSource(io.javaoperatorsdk.operator.processing.event.source.timer.TimerEventSource) Metrics(io.javaoperatorsdk.operator.api.monitoring.Metrics) ArgumentMatchers.isNull(org.mockito.ArgumentMatchers.isNull) Logger(org.slf4j.Logger) Mockito.times(org.mockito.Mockito.times) UUID(java.util.UUID) Mockito.when(org.mockito.Mockito.when) HasMetadata(io.fabric8.kubernetes.api.model.HasMetadata) Mockito.verify(org.mockito.Mockito.verify) Test(org.junit.jupiter.api.Test) List(java.util.List) ResourceAction(io.javaoperatorsdk.operator.processing.event.source.controller.ResourceAction) Mockito.never(org.mockito.Mockito.never) Optional(java.util.Optional) Mockito.any(org.mockito.Mockito.any) Mockito.mock(org.mockito.Mockito.mock) ResourceEvent(io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEvent)

Aggregations

Test (org.junit.jupiter.api.Test)50 Test (org.junit.Test)34 Pod (io.fabric8.kubernetes.api.model.Pod)32 Event (io.fabric8.kubernetes.api.model.Event)31 Map (java.util.Map)31 IOException (java.io.IOException)25 ArrayList (java.util.ArrayList)25 Watcher (io.fabric8.kubernetes.client.Watcher)24 List (java.util.List)24 ObjectMeta (io.fabric8.kubernetes.api.model.ObjectMeta)23 HashMap (java.util.HashMap)22 Optional (java.util.Optional)21 EventBuilder (io.fabric8.kubernetes.api.model.EventBuilder)20 Future (io.vertx.core.Future)19 HasMetadata (io.fabric8.kubernetes.api.model.HasMetadata)18 AsyncResult (io.vertx.core.AsyncResult)17 Handler (io.vertx.core.Handler)17 Vertx (io.vertx.core.Vertx)17 WatcherException (io.fabric8.kubernetes.client.WatcherException)16 Set (java.util.Set)15