X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;ds=inline;f=support%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fconcurrency%2FLockAdviceTest.java;fp=support%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fconcurrency%2FLockAdviceTest.java;h=a29695caae7e6fec71707d08be54076d7b231572;hb=32a62ca2c752e33a7873ac868a7a1f289caedcd4;hp=0000000000000000000000000000000000000000;hpb=d2bdf4e813c6a3964958c87b2ce56eaadf8a1f0a;p=utils diff --git a/support/general/src/test/java/org/wamblee/concurrency/LockAdviceTest.java b/support/general/src/test/java/org/wamblee/concurrency/LockAdviceTest.java new file mode 100644 index 00000000..a29695ca --- /dev/null +++ b/support/general/src/test/java/org/wamblee/concurrency/LockAdviceTest.java @@ -0,0 +1,80 @@ +/* + * Copyright 2005 the original author or authors. + * + * Licensed 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.wamblee.concurrency; + +import org.springframework.aop.framework.ProxyFactoryBean; +import org.wamblee.test.TimingUtils; + +/** + * + * + * @author Erik Brakkee + */ +public class LockAdviceTest extends AbstractLockTestCase { + + private class Runner implements Runnable { + public void run() { + LockAdviceTest.this.getTracker().eventOccurred(ACQUIRED); + TimingUtils.sleep(SLEEP_TIME); + } + } + + private Runnable _target; + + /* + * (non-Javadoc) + * + * @see org.wamblee.concurrency.AbstractLockTestCase#setUp() + */ + @Override + protected void setUp() throws Exception { + super.setUp(); + + Runner runner = new Runner(); + LockAdvice advice = new LockAdvice(new JvmLock()); + + ProxyFactoryBean support = new ProxyFactoryBean(); + support.setInterfaces(new Class[]{ Runnable.class }); + support.setTarget(runner); + support.addAdvice(advice); + _target = (Runnable)support.getObject(); + + } + + /* + * (non-Javadoc) + * + * @see org.wamblee.concurrency.AbstractLockTestCase#runThread() + */ + @Override + protected Thread runThread() { + Thread t = new Thread(new Runnable() { + public void run() { + try { + getTracker().eventOccurred(STARTED); + _target.run(); + getTracker().eventOccurred(RELEASED); + } catch (Throwable e) { + throw new RuntimeException(e); + } + }; + }); + t.start(); + return t; + } + +}