01: package org.apache.lucene.store;
02:
03: /* ====================================================================
04: * The Apache Software License, Version 1.1
05: *
06: * Copyright (c) 2001,2004 The Apache Software Foundation. All rights
07: * reserved.
08: *
09: * Redistribution and use in source and binary forms, with or without
10: * modification, are permitted provided that the following conditions
11: * are met:
12: *
13: * 1. Redistributions of source code must retain the above copyright
14: * notice, this list of conditions and the following disclaimer.
15: *
16: * 2. Redistributions in binary form must reproduce the above copyright
17: * notice, this list of conditions and the following disclaimer in
18: * the documentation and/or other materials provided with the
19: * distribution.
20: *
21: * 3. The end-user documentation included with the redistribution,
22: * if any, must include the following acknowledgment:
23: * "This product includes software developed by the
24: * Apache Software Foundation (http://www.apache.org/)."
25: * Alternately, this acknowledgment may appear in the software itself,
26: * if and wherever such third-party acknowledgments normally appear.
27: *
28: * 4. The names "Apache" and "Apache Software Foundation" and
29: * "Apache Lucene" must not be used to endorse or promote products
30: * derived from this software without prior written permission. For
31: * written permission, please contact apache@apache.org.
32: *
33: * 5. Products derived from this software may not be called "Apache",
34: * "Apache Lucene", nor may "Apache" appear in their name, without
35: * prior written permission of the Apache Software Foundation.
36: *
37: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
41: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48: * SUCH DAMAGE.
49: * ====================================================================
50: *
51: * This software consists of voluntary contributions made by many
52: * individuals on behalf of the Apache Software Foundation. For more
53: * information on the Apache Software Foundation, please see
54: * <http://www.apache.org/>.
55: */
56:
57: import java.io.IOException;
58: import org.apache.lucene.util.LuceneTestCase;
59:
60: public class TestLock extends LuceneTestCase {
61:
62: public void testObtain() {
63: LockMock lock = new LockMock();
64: Lock.LOCK_POLL_INTERVAL = 10;
65:
66: try {
67: lock.obtain(Lock.LOCK_POLL_INTERVAL);
68: fail("Should have failed to obtain lock");
69: } catch (IOException e) {
70: assertEquals("should attempt to lock more than once",
71: lock.lockAttempts, 2);
72: }
73: }
74:
75: private class LockMock extends Lock {
76: public int lockAttempts;
77:
78: public boolean obtain() {
79: lockAttempts++;
80: return false;
81: }
82:
83: public void release() {
84: // do nothing
85: }
86:
87: public boolean isLocked() {
88: return false;
89: }
90: }
91: }
|