[ 
https://issues.apache.org/jira/browse/GEODE-3434?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16126052#comment-16126052
 ] 

ASF GitHub Bot commented on GEODE-3434:
---------------------------------------

Github user DivineEnder commented on a diff in the pull request:

    https://github.com/apache/geode/pull/712#discussion_r133012849
  
    --- Diff: 
geode-assembly/src/test/java/org/apache/geode/session/tests/TomcatSessionBackwardsCompatibilityTest.java
 ---
    @@ -0,0 +1,254 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license
    + * agreements. See the NOTICE file distributed with this work for 
additional information regarding
    + * copyright ownership. The ASF licenses this file to You under the Apache 
License, Version 2.0 (the
    + * "License"); you may not use this file except in compliance with the 
License. You may obtain a
    + * copy of the License at
    + *
    + * http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software 
distributed under the License
    + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 
ANY KIND, either express
    + * or implied. See the License for the specific language governing 
permissions and limitations under
    + * the License.
    + */
    +package org.apache.geode.session.tests;
    +
    +import static org.junit.Assert.assertEquals;
    +
    +import java.io.BufferedReader;
    +import java.io.File;
    +import java.io.IOException;
    +import java.io.InputStream;
    +import java.io.InputStreamReader;
    +import java.net.URISyntaxException;
    +import java.util.Collection;
    +import java.util.List;
    +
    +import org.junit.After;
    +import org.junit.Before;
    +import org.junit.Rule;
    +import org.junit.Test;
    +import org.junit.experimental.categories.Category;
    +import org.junit.rules.TestName;
    +import org.junit.runner.RunWith;
    +import org.junit.runners.Parameterized;
    +
    +import org.apache.geode.internal.AvailablePortHelper;
    +import org.apache.geode.management.internal.cli.i18n.CliStrings;
    +import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
    +import org.apache.geode.test.dunit.rules.GfshShellConnectionRule;
    +import org.apache.geode.test.dunit.rules.LocatorServerStartupRule;
    +import org.apache.geode.test.dunit.standalone.VersionManager;
    +import org.apache.geode.test.junit.categories.BackwardCompatibilityTest;
    +import org.apache.geode.test.junit.categories.DistributedTest;
    +import 
org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
    +
    +/**
    + * This test iterates through the versions of Geode and executes session 
client compatibility with
    + * the current version of Geode.
    + */
    +@Category({DistributedTest.class, BackwardCompatibilityTest.class})
    +@RunWith(Parameterized.class)
    
[email protected](CategoryWithParameterizedRunnerFactory.class)
    +public class TomcatSessionBackwardsCompatibilityTest {
    +
    +  @Parameterized.Parameters
    +  public static Collection<String> data() {
    +    List<String> result = 
VersionManager.getInstance().getVersionsWithoutCurrent();
    +    result.removeIf(s -> Integer.parseInt(s) < 120);
    +    if (result.size() < 1) {
    +      throw new RuntimeException("No older versions of Geode were found to 
test against");
    +    }
    +    return result;
    +  }
    +
    +  @Rule
    +  public transient GfshShellConnectionRule gfsh = new 
GfshShellConnectionRule();
    +
    +  @Rule
    +  public transient LocatorServerStartupRule locatorStartup = new 
LocatorServerStartupRule();
    +
    +  @Rule
    +  public transient TestName testName = new TestName();
    +
    +  public transient Client client;
    +  public transient ContainerManager manager;
    +
    +  File oldBuild;
    +  File oldModules;
    +
    +  TomcatInstall tomcat7079AndOldModules;
    +  TomcatInstall tomcat7079AndCurrentModules;
    +  TomcatInstall tomcat8AndOldModules;
    +  TomcatInstall tomcat8AndCurrentModules;
    +
    +  int locatorPort;
    +  String classPathTomcat7079;
    +  String classPathTomcat8;
    +
    +  public TomcatSessionBackwardsCompatibilityTest(String version) {
    +    VersionManager versionManager = VersionManager.getInstance();
    +    String installLocation = versionManager.getInstall(version);
    +    oldBuild = new File(installLocation);
    +    oldModules = new File(installLocation + "/tools/Modules/");
    +  }
    +
    +  protected void startServer(String name, String classPath, int 
locatorPort) throws Exception {
    +    CommandStringBuilder command = new 
CommandStringBuilder(CliStrings.START_SERVER);
    +    command.addOption(CliStrings.START_SERVER__NAME, name);
    +    command.addOption(CliStrings.START_SERVER__SERVER_PORT, "0");
    +    command.addOption(CliStrings.START_SERVER__CLASSPATH, classPath);
    +    command.addOption(CliStrings.START_SERVER__LOCATORS, "localhost[" + 
locatorPort + "]");
    +    gfsh.executeAndVerifyCommand(command.toString());
    +  }
    +
    +  protected void startLocator(String name, String classPath, int port) 
throws Exception {
    +    CommandStringBuilder locStarter = new 
CommandStringBuilder(CliStrings.START_LOCATOR);
    +    locStarter.addOption(CliStrings.START_LOCATOR__MEMBER_NAME, "loc");
    +    locStarter.addOption(CliStrings.START_LOCATOR__CLASSPATH, classPath);
    +    locStarter.addOption(CliStrings.START_LOCATOR__PORT, 
Integer.toString(port));
    +    gfsh.executeAndVerifyCommand(locStarter.toString());
    +
    +  }
    +
    +  @Before
    +  public void setup() throws Exception {
    +    tomcat7079AndOldModules = new 
TomcatInstall(TomcatInstall.TomcatVersion.TOMCAT779,
    +        ContainerInstall.ConnectionType.CLIENT_SERVER,
    +        ContainerInstall.DEFAULT_INSTALL_DIR + "Tomcat7079AndOldModules",
    +        oldModules.getAbsolutePath(), oldBuild.getAbsolutePath() + "/lib");
    +
    +    tomcat7079AndCurrentModules = new 
TomcatInstall(TomcatInstall.TomcatVersion.TOMCAT779,
    +        ContainerInstall.ConnectionType.CLIENT_SERVER,
    +        ContainerInstall.DEFAULT_INSTALL_DIR + 
"Tomcat7079AndCurrentModules");
    +
    +    tomcat8AndOldModules = new 
TomcatInstall(TomcatInstall.TomcatVersion.TOMCAT8,
    +        ContainerInstall.ConnectionType.CLIENT_SERVER,
    +        ContainerInstall.DEFAULT_INSTALL_DIR + "Tomcat8AndOldModules", 
oldModules.getAbsolutePath(),
    +        oldBuild.getAbsolutePath() + "/lib");
    +
    +    tomcat8AndCurrentModules = new 
TomcatInstall(TomcatInstall.TomcatVersion.TOMCAT8,
    +        ContainerInstall.ConnectionType.CLIENT_SERVER,
    +        ContainerInstall.DEFAULT_INSTALL_DIR + "Tomcat8AndCurrentModules");
    +
    +    classPathTomcat7079 = tomcat7079AndCurrentModules.getHome() + "/lib/*" 
+ File.pathSeparator
    +        + tomcat7079AndCurrentModules.getHome() + "/bin/*";
    +    classPathTomcat8 = tomcat8AndCurrentModules.getHome() + "/lib/*" + 
File.pathSeparator
    +        + tomcat8AndCurrentModules.getHome() + "/bin/*";
    +
    +    // Get available port for the locator
    +    locatorPort = AvailablePortHelper.getRandomAvailableTCPPort();
    +
    +    tomcat7079AndOldModules.setDefaultLocator("localhost", locatorPort);
    +    tomcat7079AndCurrentModules.setDefaultLocator("localhost", 
locatorPort);
    +
    +    tomcat8AndOldModules.setDefaultLocator("localhost", locatorPort);
    +    tomcat8AndCurrentModules.setDefaultLocator("localhost", locatorPort);
    +
    +    client = new Client();
    +    manager = new ContainerManager();
    +    // Due to parameterization of the test name, the URI would be 
malformed. Instead, it strips off
    +    // the [] symbols
    +    manager.setTestName(testName.getMethodName().replace("[", 
"").replace("]", ""));
    +  }
    +
    +  private void startClusterWithTomcat(String tomcatClassPath) throws 
Exception {
    +    startLocator("loc", tomcatClassPath, locatorPort);
    +    startServer("server", tomcatClassPath, locatorPort);
    +  }
    +
    +  /**
    +   * Stops all containers that were previously started and cleans up their 
configurations
    +   */
    +  @After
    +  public void stop() throws Exception {
    +    manager.stopAllActiveContainers();
    +    manager.cleanUp();
    +
    +    tomcat8AndCurrentModules.clearPreviousRuns();
    --- End diff --
    
    Change clearPreviousRuns to remove only previous runs of current version 
being added


> Allow the modules to be interoperable with current and older versions of 
> tomcat 7 
> ----------------------------------------------------------------------------------
>
>                 Key: GEODE-3434
>                 URL: https://issues.apache.org/jira/browse/GEODE-3434
>             Project: Geode
>          Issue Type: Bug
>          Components: http session
>            Reporter: Jason Huynh
>            Assignee: Jason Huynh
>
> There was a change to the attribute field in tomcat (and we made the 
> necessary changes in geode session modules), but that does not allow our 
> session modules to work with older versions of tomcat 7.  We can probably 
> modify the classes to allow use with of the session module jars across 
> different versions of tomcat 7.
> We should probably add tests that run against older versions of geode to 
> allow backwards compatibility between a geode server and a session module jar 
> from a previous release.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to