### Question:
SessionFlushValve extends AbstractLifecycle implements Contained, SessionFlushValveManagement,
        Valve { @Override protected void startInternal() { this.lockTemplate.withReadLock(new LockTemplate.LockedOperation<Void>() { @Override public Void invoke() { SessionFlushValve.this.jmxSupport.register(getObjectName(), SessionFlushValve.this); return null; } }); } SessionFlushValve();   SessionFlushValve(JmxSupport jmxSupport); @Override void backgroundProcess(); @Override Container getContainer(); @Override void setContainer(final Container container); @Override Valve getNext(); @Override void setNext(final Valve valve); Store getStore(); void setStore(final Store store); @Override void invoke(final Request request, final Response response); @Override boolean isAsyncSupported();  }### Answer:
@Test public void startInternal() { Context context = mock(Context.class); Host host = mock(Host.class); this.valve.setContainer(context); when(context.getName()).thenReturn("test-context-name"); when(context.getParent()).thenReturn(host); when(host.getName()).thenReturn("test-host-name"); this.valve.startInternal(); verify(this.jmxSupport).register("Catalina:type=Valve,context=/test-context-name,host=test-host-name," + "name=SessionFlushValve", this.valve); }