--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * 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:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.db.tests.regression.bugs;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.Session;
+import org.simantics.db.WriteGraph;
+import org.simantics.db.common.request.ReadRequest;
+import org.simantics.db.common.request.WriteRequest;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.testing.annotation.Fails;
+import org.simantics.db.testing.base.ExistingDatabaseTest;
+import org.simantics.db.testing.common.Terminator;
+
+/**
+ * Tests that sync read within sync write causes exception.
+ * Currently this tests causes deadlock.
+ */
+public class SyncWriteReadTest1 extends ExistingDatabaseTest {
+ final boolean DEBUG = true;
+ final String resourceName = "r1";
+
+ private Terminator terminator;
+
+ @Before
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ terminator = new Terminator(3);
+ }
+
+ @After
+ @Override
+ public void tearDown() throws Exception {
+ terminator.disarm();
+ super.tearDown();
+ }
+
+ @Test
+ @Fails
+ public void testSyncWriteReadTest1() throws Exception {
+ final Session session = getSession();
+ try {
+ session.syncRequest(new WriteRequest() {
+ @Override
+ public void perform(WriteGraph graph) throws DatabaseException {
+ try {
+ session.sync(new ReadRequest() {
+ @Override
+ public void run(ReadGraph graph) throws DatabaseException {
+ Resource root = graph.getResource(ROOT_LIBRARY_URI);
+ assertTrue("Failed to get root library.", null == root);
+ }
+ });
+ fail("Missing exception during read request.");
+ } catch (DatabaseException e) {
+ if (DEBUG)
+ System.out.println("Catched DatabaseException as expected.");
+ }
+ }
+ });
+ } catch (DatabaseException e) {
+ if (DEBUG)
+ System.out.println("Catched DatabaseException as excepected:" + e.getMessage());
+ return;
+ }
+ fail("Sync write failed to throw exception as expected.");
+ }
+}