package org.zstack.test.compute.zone; import org.zstack.header.zone.*; import org.zstack.utils.Utils; import org.zstack.utils.logging.CLogger; public class ZoneChnageStateExtension implements ZoneChangeStateExtensionPoint { CLogger logger = Utils.getLogger(ZoneChnageStateExtension.class); private boolean beforeCalled = false; private boolean afterCalled = false; private boolean isPreventChange = true; private ZoneState expectedCurrent; private ZoneState expectedNext; private ZoneStateEvent expectedStateEvent; @Override public void preChangeZoneState(ZoneInventory inventory, ZoneStateEvent event, ZoneState nextState) throws ZoneException { if (this.isPreventChange) { throw new ZoneException("Prevent changing on purpose"); } } @Override public void beforeChangeZoneState(ZoneInventory inventory, ZoneStateEvent event, ZoneState nextState) { if (inventory.getState().equals(expectedCurrent.toString()) && event == this.expectedStateEvent && nextState == this.expectedNext) { this.beforeCalled = true; } else { logger.warn(String.format( "beforeChangeZoneState: expected current state: %s stateEvent: %s nextState:%s, but received current:%s stateEventL:%s next:%s", this.expectedCurrent, this.expectedStateEvent, this.expectedNext, inventory.getState(), event, nextState)); } } @Override public void afterChangeZoneState(ZoneInventory inventory, ZoneStateEvent event, ZoneState previousState) { if (inventory.getState().equals(expectedNext.toString()) && event == this.expectedStateEvent && this.expectedCurrent == previousState) { this.afterCalled = true; } else { logger.warn(String.format( "afterChangeZoneState: expected current state: %s stateEvent: %s previousState:%s, but received current:%s stateEventL:%s previous:%s", this.expectedNext, this.expectedStateEvent, this.expectedCurrent, inventory.getState(), event, previousState)); } } public boolean isBeforeCalled() { return beforeCalled; } public void setBeforeCalled(boolean beforeCalled) { this.beforeCalled = beforeCalled; } public boolean isAfterCalled() { return afterCalled; } public void setAfterCalled(boolean afterCalled) { this.afterCalled = afterCalled; } public ZoneState getExpectedCurrent() { return expectedCurrent; } public void setExpectedCurrent(ZoneState expectedCurrent) { this.expectedCurrent = expectedCurrent; } public ZoneState getExpectedNext() { return expectedNext; } public void setExpectedNext(ZoneState expectedNext) { this.expectedNext = expectedNext; } public boolean isPreventChange() { return isPreventChange; } public void setPreventChange(boolean isPreventChange) { this.isPreventChange = isPreventChange; } public ZoneStateEvent getExpectedStateEvent() { return expectedStateEvent; } public void setExpectedStateEvent(ZoneStateEvent expectedStateEvent) { this.expectedStateEvent = expectedStateEvent; } }