Frank Kobzik has uploaded a new change for review. Change subject: frontend: Prepare frontend for console unit tests ......................................................................
frontend: Prepare frontend for console unit tests This patch makes couple of adjustments for console models to be testable (mostly static attributes). Change-Id: Icde9131d9415ba500eb2a222dc4e7187bf82f868 Signed-off-by: Frantisek Kobzik <fkob...@redhat.com> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RdpConsoleModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/ConstantsManager.java 6 files changed, 82 insertions(+), 25 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/73/23973/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java index f14ee6c..20c516b 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java @@ -25,8 +25,14 @@ public abstract class Configurator { private static final String DOCUMENTATION_LIB_PATH = "html/"; //$NON-NLS-1$ - private static final String DOCUMENTATION_ROOT = BaseContextPathData.getInstance().getRelativePath() - + "docs/manual"; //$NON-NLS-1$ + static String DOCUMENTATION_ROOT; + + private static String getDocumentationRoot() { + if (DOCUMENTATION_ROOT == null) { + DOCUMENTATION_ROOT = BaseContextPathData.getInstance().getRelativePath() + "docs/manual"; //$NON-NLS-1$; + } + return DOCUMENTATION_ROOT; + } private static String documentationLangPath; @@ -179,7 +185,7 @@ * @return Documentation base URL, including the trailing slash. */ public String getDocumentationBaseURL() { - return FrontendUrlUtils.getRootURL() + DOCUMENTATION_ROOT + "/"; //$NON-NLS-1$ + return FrontendUrlUtils.getRootURL() + getDocumentationRoot() + "/"; //$NON-NLS-1$ } /** diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java index d13a95b..27affc5 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ConsoleModel.java @@ -9,6 +9,7 @@ import com.google.gwt.user.client.ui.TextArea; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VMStatus; +import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.core.common.queries.HasAdElementReconnectPermissionParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; @@ -18,6 +19,7 @@ import org.ovirt.engine.ui.frontend.utils.BaseContextPathData; import org.ovirt.engine.ui.uicommonweb.BaseCommandTarget; import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.Model; @@ -27,8 +29,16 @@ import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; public abstract class ConsoleModel extends EntityModel { - public static final String GET_ATTACHMENT_SERVLET_URL = BaseContextPathData.getInstance().getPath() - + "services/attachment/"; //$NON-NLS-1$ + + static String ATTACHMENT_SERVLET_URL; + + private static String getAttachmentServletUrl() { + if (ATTACHMENT_SERVLET_URL == null) { + ATTACHMENT_SERVLET_URL = BaseContextPathData.getInstance().getPath() + "services/attachment/"; //$NON-NLS-1$ + } + + return ATTACHMENT_SERVLET_URL; + } private static String EJECT_LABEL; @@ -262,7 +272,7 @@ formPanel.setMethod(FormPanel.METHOD_POST); formPanel.getElement().setId("conform" + Double.valueOf(Math.random()).toString());//$NON-NLS-1$ formPanel.setWidget(innerPanel); - formPanel.setAction(GET_ATTACHMENT_SERVLET_URL + fileName); + formPanel.setAction(getAttachmentServletUrl() + fileName); formPanel.setEncoding(FormPanel.ENCODING_URLENCODED); formPanel.setVisible(false); @@ -286,4 +296,9 @@ return textArea; } + // abstraction that allows overriding when testing + protected <T> T getConfigValuePreConverted(ConfigurationValues val) { + return (T) AsyncDataProvider.getConfigValuePreConverted(val); + } + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RdpConsoleModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RdpConsoleModel.java index ec4f182..96ef2c2 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RdpConsoleModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RdpConsoleModel.java @@ -58,7 +58,7 @@ return useFQDNIfAvailable; } - private void setrdp(IRdp value) { + void setrdp(IRdp value) { privaterdp = value; } @@ -67,9 +67,20 @@ setTitle(ConstantsManager.getInstance().getConstants().RDPTitle()); this.consoleUtils = (ConsoleUtils) TypeResolver.getInstance().resolve(ConsoleUtils.class); - setRdpImplementation( - ClientConsoleMode.valueOf((String) AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.ClientModeRdpDefault))); - setUseFqdnIfAvailable((Boolean) AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.UseFqdnForRdpIfAvailable)); + setRdpImplementation(readDefaultConsoleClientMode()); + setUseFqdnIfAvailable((Boolean) getConfigValuePreConverted(ConfigurationValues.UseFqdnForRdpIfAvailable)); + } + + /** + * Safely determine the default client mode for RDP. + * @return default RDP client mode read from engine config or 'Native' if there is a problem when retrieving the value. + */ + private ClientConsoleMode readDefaultConsoleClientMode() { + try { + return ClientConsoleMode.valueOf((String) getConfigValuePreConverted(ConfigurationValues.ClientModeRdpDefault)); + } catch (Exception e) { + return ClientConsoleMode.Native; + } } @Override @@ -105,13 +116,17 @@ @Override public boolean canBeSelected() { - return AsyncDataProvider.isWindowsOsType(getEntity().getOs()); + return isVmOsWindows(); } @Override public boolean canConnect() { return (getEntity().getStatus() == VMStatus.Up || getEntity().getStatus() == VMStatus.PoweringDown) - && AsyncDataProvider.isWindowsOsType(getEntity().getVmOsId()); + && isVmOsWindows(); + } + + boolean isVmOsWindows() { + return AsyncDataProvider.isWindowsOsType(getEntity().getVmOsId()); } public void raiseErrorEvent(ErrorCodeEventArgs e) { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java index 80c230c..1befae0 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java @@ -65,7 +65,7 @@ private ISpice privatespice; private ClientConsoleMode consoleMode; - private void setspice(ISpice value) { + void setspice(ISpice value) { privatespice = value; } @@ -90,8 +90,7 @@ } protected ClientConsoleMode getDefaultConsoleMode() { - return ClientConsoleMode.valueOf((String) AsyncDataProvider - .getConfigValuePreConverted(ConfigurationValues.ClientModeSpiceDefault)); + return ClientConsoleMode.valueOf((String) getConfigValuePreConverted(ConfigurationValues.ClientModeSpiceDefault)); } public ISpice getspice() { @@ -166,8 +165,7 @@ } // Don't connect if there VM is not running on any host. - if (getEntity().getRunOnVds() == null) - { + if (getEntity().getRunOnVds() == null) { return; } @@ -191,9 +189,12 @@ DisplayType displayType = getEntity().getDisplayType() != null ? getEntity().getDisplayType() : getEntity().getDefaultDisplayType(); - boolean hasVmSpiceSupport = Boolean.TRUE.equals(AsyncDataProvider.hasSpiceSupport(getEntity().getOs(), getEntity().getVdsGroupCompatibilityVersion())); - return displayType == DisplayType.qxl && hasVmSpiceSupport; + return displayType == DisplayType.qxl && hasVmSpiceSupport(); + } + + boolean hasVmSpiceSupport() { + return Boolean.TRUE.equals(AsyncDataProvider.hasSpiceSupport(getEntity().getOs(), getEntity().getVdsGroupCompatibilityVersion())); } @Override @@ -510,7 +511,7 @@ return getEntity().getVdsGroupSpiceProxy(); } - String globalSpiceProxy = (String) AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.SpiceProxyDefault); + String globalSpiceProxy = (String) getConfigValuePreConverted(ConfigurationValues.SpiceProxyDefault); if (!StringHelper.isNullOrEmpty(globalSpiceProxy)) { return globalSpiceProxy; } @@ -650,8 +651,7 @@ + vmName + ", cancel open spice console request."); //$NON-NLS-1$ } - public void spiceConnect() - { + public void spiceConnect() { try { getspice().connect(); } catch (RuntimeException ex) { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java index 18f7ec7..c8f60a0 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java @@ -37,7 +37,7 @@ private IVnc vncImpl; - private String getPort() { + String getPort() { if (getEntity() == null && getEntity().getDisplay() == null) { return null; } @@ -78,7 +78,17 @@ } } + boolean isClientConsoleModeLegal(ClientConsoleMode val) { + return (val == ClientConsoleMode.Native) + ? true + : ((ConsoleUtils) TypeResolver.getInstance().resolve(ConsoleUtils.class)).isWebSocketProxyDefined(); + } + public void setVncImplementation(ClientConsoleMode consoleMode) { + if (!isClientConsoleModeLegal(consoleMode)) { + throw new IllegalStateException("console mode is not legal: " + consoleMode); // $NON-NLS-1$ + } + Class implClass = consoleMode == ClientConsoleMode.NoVnc ? INoVnc.class : IVncNative.class; this.consoleMode = consoleMode; this.vncImpl = (IVnc) TypeResolver.getInstance().resolve(implClass); diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/ConstantsManager.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/ConstantsManager.java index 8f60bf0..da889ab 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/ConstantsManager.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/ConstantsManager.java @@ -5,8 +5,8 @@ public final class ConstantsManager { private static final ConstantsManager INSTANCE = new ConstantsManager(); - private static final UIConstants constants = GWT.create(UIConstants.class); - private static final UIMessages messages = GWT.create(UIMessages.class); + private static UIConstants constants = null; + private static UIMessages messages = null; private ConstantsManager() { } @@ -16,10 +16,21 @@ } public UIConstants getConstants() { + if (constants == null) { + constants = GWT.create(UIConstants.class); + } return constants; } + // for testing purposes + public static void setConstants(UIConstants testConstants) { + constants = testConstants; + } + public UIMessages getMessages() { + if (messages == null) { + messages = GWT.create(UIMessages.class); + } return messages; } -- To view, visit http://gerrit.ovirt.org/23973 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icde9131d9415ba500eb2a222dc4e7187bf82f868 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Frank Kobzik <fkob...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches