/* * Copyright (c) 2008-2012, 2015 Eike Stepper (Berlin, Germany) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Eike Stepper - initial API and implementation */ package org.eclipse.emf.cdo.tests.bugzilla; import org.eclipse.emf.cdo.common.util.TransportException; import org.eclipse.emf.cdo.eresource.CDOResource; import org.eclipse.emf.cdo.session.CDOSession; import org.eclipse.emf.cdo.tests.AbstractCDOTest; import org.eclipse.emf.cdo.tests.model1.Customer; import org.eclipse.emf.cdo.tests.util.TestRevisionManager; import org.eclipse.emf.cdo.transaction.CDOTransaction; import java.util.concurrent.TimeoutException; /** * Make timeouts in read-access requests configurable * <p> * See bug 241464 * * @author Eike Stepper */ public class Bugzilla_241464_Test extends AbstractCDOTest { public void testBugzilla_241464() throws Exception { { CDOSession session = openSession(); if (!(session instanceof org.eclipse.emf.cdo.net4j.CDONet4jSession)) { return; } CDOTransaction transaction = session.openTransaction(); CDOResource resource = transaction.createResource(getResourcePath("/test1")); Customer customer = getModel1Factory().createCustomer(); customer.setName("customer"); resource.getContents().add(customer); transaction.commit(); session.close(); } CDOSession session = openSession(); CDOTransaction transaction = session.openTransaction(); CDOResource resource = transaction.getResource(getResourcePath("/test1")); TestRevisionManager revisionManager = (TestRevisionManager)getRepository().getRevisionManager(); revisionManager.setGetRevisionsDelay(10000L); // Make the protocol time out ((org.eclipse.emf.cdo.net4j.CDONet4jSession)session).options().getNet4jProtocol().setTimeout(2000L); try { Customer customer = (Customer)resource.getContents().get(0); System.out.println(customer.getName()); fail("TransportException expected"); } catch (TransportException expected) { assertInstanceOf(TimeoutException.class, expected.getCause()); // SUCCESS } finally { revisionManager.setGetRevisionsDelay(0L); // Terminate repo } } }