Run Easymock automation tests on LambdaTest cloud grid
Perform automation testing on 3000+ real desktop and mobile devices online.
/*
* 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.catalina.valves;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionBindingListener;
import org.hamcrest.CoreMatchers;
import org.hamcrest.MatcherAssert;
import org.junit.Assert;
import org.junit.Test;
import org.apache.catalina.Context;
import org.apache.catalina.Host;
import org.apache.catalina.Manager;
import org.apache.catalina.Valve;
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.session.StandardManager;
import org.apache.catalina.session.StandardSession;
import org.easymock.EasyMock;
import org.easymock.IExpectationSetters;
public class TestCrawlerSessionManagerValve {
private static final Manager TEST_MANAGER;
static {
TEST_MANAGER = new StandardManager();
TEST_MANAGER.setContext(new StandardContext());
}
@Test
public void testCrawlerIpsPositive() throws Exception {
CrawlerSessionManagerValve valve = new CrawlerSessionManagerValve();
valve.setCrawlerIps("216\\.58\\.206\\.174");
valve.setCrawlerUserAgents(valve.getCrawlerUserAgents());
valve.setNext(EasyMock.createMock(Valve.class));
HttpSession session = createSessionExpectations(valve, true);
Request request = createRequestExpectations("216.58.206.174", session, true);
EasyMock.replay(request, session);
valve.invoke(request, EasyMock.createMock(Response.class));
EasyMock.verify(request, session);
}
@Test
public void testCrawlerIpsNegative() throws Exception {
CrawlerSessionManagerValve valve = new CrawlerSessionManagerValve();
valve.setCrawlerIps("216\\.58\\.206\\.174");
valve.setCrawlerUserAgents(valve.getCrawlerUserAgents());
valve.setNext(EasyMock.createMock(Valve.class));
HttpSession session = createSessionExpectations(valve, false);
Request request = createRequestExpectations("127.0.0.1", session, false);
EasyMock.replay(request, session);
valve.invoke(request, EasyMock.createMock(Response.class));
EasyMock.verify(request, session);
}
@Test
public void testCrawlerMultipleHostsHostAware() throws Exception {
CrawlerSessionManagerValve valve = new CrawlerSessionManagerValve();
valve.setCrawlerUserAgents(valve.getCrawlerUserAgents());
valve.setHostAware(true);
valve.setContextAware(true);
valve.setNext(EasyMock.createMock(Valve.class));
verifyCrawlingLocalhost(valve, "localhost");
verifyCrawlingLocalhost(valve, "example.invalid");
}
@Test
public void testCrawlerMultipleContextsContextAware() throws Exception {
CrawlerSessionManagerValve valve = new CrawlerSessionManagerValve();
valve.setCrawlerUserAgents(valve.getCrawlerUserAgents());
valve.setHostAware(true);
valve.setContextAware(true);
valve.setNext(EasyMock.createMock(Valve.class));
verifyCrawlingContext(valve, "/examples");
verifyCrawlingContext(valve, null);
}
@Test
public void testCrawlersSessionIdIsRemovedAfterSessionExpiry() throws IOException, ServletException {
CrawlerSessionManagerValve valve = new CrawlerSessionManagerValve();
valve.setCrawlerIps("216\\.58\\.206\\.174");
valve.setCrawlerUserAgents(valve.getCrawlerUserAgents());
valve.setNext(EasyMock.createMock(Valve.class));
valve.setSessionInactiveInterval(0);
StandardSession session = new StandardSession(TEST_MANAGER);
session.setId("id");
session.setValid(true);
Request request = createRequestExpectations("216.58.206.174", session, true);
EasyMock.replay(request);
valve.invoke(request, EasyMock.createMock(Response.class));
EasyMock.verify(request);
MatcherAssert.assertThat(valve.getClientIpSessionId().values(), CoreMatchers.hasItem("id"));
session.expire();
Assert.assertEquals(0, valve.getClientIpSessionId().values().size());
}
private void verifyCrawlingLocalhost(CrawlerSessionManagerValve valve, String hostname)
throws IOException, ServletException {
HttpSession session = createSessionExpectations(valve, true);
Request request = createRequestExpectations("127.0.0.1", session, true, hostname, "/examples", "tomcatBot 1.0");
EasyMock.replay(request, session);
valve.invoke(request, EasyMock.createMock(Response.class));
EasyMock.verify(request, session);
}
private void verifyCrawlingContext(CrawlerSessionManagerValve valve, String contextPath)
throws IOException, ServletException {
HttpSession session = createSessionExpectations(valve, true);
Request request = createRequestExpectations("127.0.0.1", session, true, "localhost", contextPath, "tomcatBot 1.0");
EasyMock.replay(request, session);
valve.invoke(request, EasyMock.createMock(Response.class));
EasyMock.verify(request, session);
}
private HttpSession createSessionExpectations(CrawlerSessionManagerValve valve, boolean isBot) {
HttpSession session = EasyMock.createMock(HttpSession.class);
if (isBot) {
EasyMock.expect(session.getId()).andReturn("id").times(2);
session.setAttribute(EasyMock.eq(valve.getClass().getName()), EasyMock.anyObject(HttpSessionBindingListener.class));
EasyMock.expectLastCall();
session.setMaxInactiveInterval(60);
EasyMock.expectLastCall();
}
return session;
}
private Request createRequestExpectations(String ip, HttpSession session, boolean isBot) {
return createRequestExpectations(ip, session, isBot, "localhost", "/examples", "something 1.0");
}
private Request createRequestExpectations(String ip, HttpSession session, boolean isBot, String hostname,
String contextPath, String userAgent) {
Request request = EasyMock.createMock(Request.class);
EasyMock.expect(request.getRemoteAddr()).andReturn(ip);
EasyMock.expect(request.getHost()).andReturn(simpleHostWithName(hostname));
EasyMock.expect(request.getContext()).andReturn(simpleContextWithName(contextPath));
IExpectationSetters<HttpSession> setter = EasyMock.expect(request.getSession(false))
.andReturn(null);
if (isBot) {
setter.andReturn(session);
}
EasyMock.expect(request.getHeaders("user-agent")).andAnswer(() -> Collections.enumeration(Arrays.asList(userAgent)));
return request;
}
private Host simpleHostWithName(String hostname) {
Host host = EasyMock.createMock(Host.class);
EasyMock.expect(host.getName()).andReturn(hostname);
EasyMock.replay(host);
return host;
}
private Context simpleContextWithName(String contextPath) {
if (contextPath == null) {
return null;
}
Context context = EasyMock.createMock(Context.class);
EasyMock.expect(context.getName()).andReturn(contextPath);
EasyMock.replay(context);
return context;
}
}
/**
* 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.mahout.cf.taste.impl.recommender.svd;
import org.apache.mahout.cf.taste.impl.TasteTestCase;
import org.apache.mahout.cf.taste.impl.common.FastIDSet;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.model.PreferenceArray;
import org.apache.mahout.cf.taste.recommender.CandidateItemsStrategy;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.easymock.EasyMock;
import org.junit.Test;
import java.util.List;
public class SVDRecommenderTest extends TasteTestCase {
@Test
public void estimatePreference() throws Exception {
DataModel dataModel = EasyMock.createMock(DataModel.class);
Factorizer factorizer = EasyMock.createMock(Factorizer.class);
Factorization factorization = EasyMock.createMock(Factorization.class);
EasyMock.expect(factorizer.factorize()).andReturn(factorization);
EasyMock.expect(factorization.getUserFeatures(1L)).andReturn(new double[] { 0.4, 2 });
EasyMock.expect(factorization.getItemFeatures(5L)).andReturn(new double[] { 1, 0.3 });
EasyMock.replay(dataModel, factorizer, factorization);
SVDRecommender svdRecommender = new SVDRecommender(dataModel, factorizer);
float estimate = svdRecommender.estimatePreference(1L, 5L);
assertEquals(1, estimate, EPSILON);
EasyMock.verify(dataModel, factorizer, factorization);
}
@Test
public void recommend() throws Exception {
DataModel dataModel = EasyMock.createMock(DataModel.class);
PreferenceArray preferencesFromUser = EasyMock.createMock(PreferenceArray.class);
CandidateItemsStrategy candidateItemsStrategy = EasyMock.createMock(CandidateItemsStrategy.class);
Factorizer factorizer = EasyMock.createMock(Factorizer.class);
Factorization factorization = EasyMock.createMock(Factorization.class);
FastIDSet candidateItems = new FastIDSet();
candidateItems.add(5L);
candidateItems.add(3L);
EasyMock.expect(factorizer.factorize()).andReturn(factorization);
EasyMock.expect(dataModel.getPreferencesFromUser(1L)).andReturn(preferencesFromUser);
EasyMock.expect(candidateItemsStrategy.getCandidateItems(1L, preferencesFromUser, dataModel))
.andReturn(candidateItems);
EasyMock.expect(factorization.getUserFeatures(1L)).andReturn(new double[] { 0.4, 2 });
EasyMock.expect(factorization.getItemFeatures(5L)).andReturn(new double[] { 1, 0.3 });
EasyMock.expect(factorization.getUserFeatures(1L)).andReturn(new double[] { 0.4, 2 });
EasyMock.expect(factorization.getItemFeatures(3L)).andReturn(new double[] { 2, 0.6 });
EasyMock.replay(dataModel, candidateItemsStrategy, factorizer, factorization);
SVDRecommender svdRecommender = new SVDRecommender(dataModel, factorizer, candidateItemsStrategy);
List<RecommendedItem> recommendedItems = svdRecommender.recommend(1L, 5);
assertEquals(2, recommendedItems.size());
assertEquals(3L, recommendedItems.get(0).getItemID());
assertEquals(2.0f, recommendedItems.get(0).getValue(), EPSILON);
assertEquals(5L, recommendedItems.get(1).getItemID());
assertEquals(1.0f, recommendedItems.get(1).getValue(), EPSILON);
EasyMock.verify(dataModel, candidateItemsStrategy, factorizer, factorization);
}
}
/**
* 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.mahout.cf.taste.impl.similarity.jdbc;
import org.apache.mahout.cf.taste.impl.TasteTestCase;
import org.apache.mahout.cf.taste.similarity.ItemSimilarity;
import org.easymock.EasyMock;
import org.junit.Test;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class MySQLJDBCInMemoryItemSimilarityTest extends TasteTestCase {
@Test
public void testMemoryLoad() throws Exception {
DataSource dataSource = EasyMock.createMock(DataSource.class);
Connection connection = EasyMock.createMock(Connection.class);
PreparedStatement statement = EasyMock.createMock(PreparedStatement.class);
ResultSet resultSet = EasyMock.createMock(ResultSet.class);
EasyMock.expect(dataSource.getConnection()).andReturn(connection);
EasyMock.expect(connection.prepareStatement(MySQLJDBCInMemoryItemSimilarity.DEFAULT_GET_ALL_ITEMSIMILARITIES_SQL,
ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)).andReturn(statement);
statement.setFetchDirection(ResultSet.FETCH_FORWARD);
EasyMock.expect(statement.executeQuery()).andReturn(resultSet);
EasyMock.expect(resultSet.next()).andReturn(true);
EasyMock.expect(resultSet.getLong(1)).andReturn(1L);
EasyMock.expect(resultSet.getLong(2)).andReturn(2L);
EasyMock.expect(resultSet.getDouble(3)).andReturn(0.5);
EasyMock.expect(resultSet.next()).andReturn(true);
EasyMock.expect(resultSet.getLong(1)).andReturn(1L);
EasyMock.expect(resultSet.getLong(2)).andReturn(3L);
EasyMock.expect(resultSet.getDouble(3)).andReturn(0.4);
EasyMock.expect(resultSet.next()).andReturn(true);
EasyMock.expect(resultSet.getLong(1)).andReturn(3L);
EasyMock.expect(resultSet.getLong(2)).andReturn(4L);
EasyMock.expect(resultSet.getDouble(3)).andReturn(0.1);
EasyMock.expect(resultSet.next()).andReturn(false);
resultSet.close();
statement.close();
connection.close();
EasyMock.replay(dataSource, connection, statement, resultSet);
ItemSimilarity similarity = new MySQLJDBCInMemoryItemSimilarity(dataSource);
assertEquals(0.5, similarity.itemSimilarity(1L, 2L), EPSILON);
assertEquals(0.4, similarity.itemSimilarity(1L, 3L), EPSILON);
assertEquals(0.1, similarity.itemSimilarity(3L, 4L), EPSILON);
assertTrue(Double.isNaN(similarity.itemSimilarity(1L, 4L)));
EasyMock.verify(dataSource, connection, statement, resultSet);
}
}
Accelerate Your Automation Test Cycles With LambdaTest
Leverage LambdaTestās cloud-based platform to execute your automation tests in parallel and trim down your test execution time significantly. Your first 100 automation testing minutes are on us.