You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by js...@apache.org on 2005/05/06 14:54:58 UTC

svn commit: r168597 - in /incubator/beehive/trunk/controls/test/src: controls/org/apache/beehive/controls/test/controls/threading/ drivers/org/apache/beehive/controls/test/driver/threading/ units/org/apache/beehive/controls/test/java/property/ units/org/apache/beehive/controls/test/java/threading/

Author: jsong
Date: Fri May  6 05:54:57 2005
New Revision: 168597

URL: http://svn.apache.org/viewcvs?rev=168597&view=rev
Log:
Update tests on single-threaded controls.

Modified:
    incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/DefaultThreadControl.java
    incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/DefaultThreadControlImpl.jcs
    incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/SingleThreadControl.java
    incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/SingleThreadControlImpl.jcs
    incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/threading/DriveDefaultThread.java
    incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/threading/DriveSingleThread.java
    incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/ConstraintTest.java
    incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/threading/SingleThreadTest.java

Modified: incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/DefaultThreadControl.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/DefaultThreadControl.java?rev=168597&r1=168596&r2=168597&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/DefaultThreadControl.java (original)
+++ incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/DefaultThreadControl.java Fri May  6 05:54:57 2005
@@ -11,7 +11,5 @@
 @ControlInterface
 public interface DefaultThreadControl
 {
-
-    public int doGet();
-    public void doSet();
+	public long doSlowIncrement(boolean isBlocker);
 }

Modified: incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/DefaultThreadControlImpl.jcs
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/DefaultThreadControlImpl.jcs?rev=168597&r1=168596&r2=168597&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/DefaultThreadControlImpl.jcs (original)
+++ incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/DefaultThreadControlImpl.jcs Fri May  6 05:54:57 2005
@@ -18,23 +18,24 @@
 public class DefaultThreadControlImpl implements DefaultThreadControl, java.io.Serializable
 {
 
-    public final static int LOOPS=100;
-    private int value=0;
+    private long counter=0;
+    private boolean marker=false;
 
-    public int doGet()
-    {
-	return value;
-    }
 
-    public void doSet()
-    {
-	for(int i=0;i<LOOPS;i++){
-	    for(int j=0;j<900000;j++){
-	        String str="new String";
-	    }
-
-	    value=i;
+	public long doSlowIncrement(boolean isBlocker){
+	
+		if(isBlocker){
+			marker=true;
+			while(marker){
+				counter++;
+				try{Thread.currentThread().sleep(200);}
+				catch(InterruptedException e){e.printStackTrace();}
+			}
+			return counter;
+		}
+		else{
+			marker=false;
+			return counter;			
+		}
 	}
-    }
-    
 }

Modified: incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/SingleThreadControl.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/SingleThreadControl.java?rev=168597&r1=168596&r2=168597&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/SingleThreadControl.java (original)
+++ incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/SingleThreadControl.java Fri May  6 05:54:57 2005
@@ -11,10 +11,5 @@
 @ControlInterface
 public interface SingleThreadControl
 {
-	public final static String METHOD1="method1";
-	public final static String METHOD2="method2";
-	public final static long EXPECTED_DELAY=100;
-
-    public long method1();
-    public long method2();
+	public long doSlowIncrement(boolean isBlocker);
 }

Modified: incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/SingleThreadControlImpl.jcs
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/SingleThreadControlImpl.jcs?rev=168597&r1=168596&r2=168597&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/SingleThreadControlImpl.jcs (original)
+++ incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/threading/SingleThreadControlImpl.jcs Fri May  6 05:54:57 2005
@@ -9,56 +9,29 @@
 
 /**
  * An impl of HelloControl.
- * By default, control impl is single thread.
- *
- * Test objective: method1 and method2 on same instance should
- * inter-lock each other when invoked by different thread.
- *
  */
 @ControlImplementation
 @Threading(ThreadingPolicy.SINGLE_THREADED)
 public class SingleThreadControlImpl implements SingleThreadControl, java.io.Serializable
 {
-    private long lastAccess=0;
+    private long counter=0;
+    private boolean marker=false;
 
-    public long method1()
-    {
-	Date now=new Date();
-	if (lastAccess==0)
-	    lastAccess=now.getTime();
-	
-	try{
-	    Thread.sleep(SingleThreadControl.EXPECTED_DELAY);
-	}
-	catch(InterruptedException e){
-	    e.printStackTrace();
-	}
-
-	Date nowAgain=new Date();
-	
-	long l=nowAgain.getTime()-lastAccess;
-	lastAccess=nowAgain.getTime();
-	return l;
-    }
 
-    public long method2()
-    {
-	Date now=new Date();
-	if (lastAccess==0)
-	    lastAccess=now.getTime();
+	public long doSlowIncrement(boolean isBlocker){
 	
-	try{
-	    Thread.sleep(SingleThreadControl.EXPECTED_DELAY);
-	}
-	catch(InterruptedException e){
-	    e.printStackTrace();
+		if(isBlocker){
+			marker=true;
+			while(marker){
+				counter++;
+				try{Thread.currentThread().sleep(200);}
+				catch(InterruptedException e){e.printStackTrace();}
+			}
+			return counter;
+		}
+		else{
+			marker=false;
+			return counter;			
+		}
 	}
-
-	Date nowAgain=new Date();
-	
-	long l=nowAgain.getTime()-lastAccess;
-	lastAccess=nowAgain.getTime();
-	return l;
-    }
-    
 }

Modified: incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/threading/DriveDefaultThread.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/threading/DriveDefaultThread.java?rev=168597&r1=168596&r2=168597&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/threading/DriveDefaultThread.java (original)
+++ incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/threading/DriveDefaultThread.java Fri May  6 05:54:57 2005
@@ -12,12 +12,9 @@
 public class DriveDefaultThread extends Thread
 {
 
-	public final static String GETTER="DriveDefaultThread-getter";
-	public final static String SETTER="DriveDefaultThread-setter";
-	public final static int LOOPS=95;
-
+    private boolean role;
+	private long result=0;
     private DefaultThreadControlBean myControl;
-    private int records[]=new int[LOOPS];
 
     public DriveDefaultThread(String name){
 		super(name);
@@ -27,41 +24,15 @@
 		myControl=bean;
 	}
 
-
-    public void run() {
-
-	    //int j=0;
-	    if (getName().equals(GETTER)){
-
-	        for(int i=0;i<LOOPS;i++){
-
-	    		for(int j=0;j<900000;j++){
-	        		String str="new String";
-	    		}
-	            records[i]=myControl.doGet();
-	            //System.out.println(getName()+">>>>>"+records[i]+"<<<<<");
-			}
-		}
-	    else
-			myControl.doSet();
+    public void setRole(boolean isBlocker){
+		role=isBlocker;
 	}
 
-	public Report analyseRecord(){
-
-	    Report report=new Report();
-    	report.setStatus(Report.PASS);
-
-		for(int i=0;i<LOOPS;i++){
-
-			if ((records[i]>0)&&(records[i]<99)){
-				report.setStatus(Report.FAIL);
-				report.setMessage("getter gets a value in the middle:"+Integer.toString(records[i]));
-				break;
-			}
-
-		}
+    public void run() {
+		result=myControl.doSlowIncrement(role);
+    }
 
-	    return report;
+	public long getResult(){
+		return result;
 	}
-
 }

Modified: incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/threading/DriveSingleThread.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/threading/DriveSingleThread.java?rev=168597&r1=168596&r2=168597&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/threading/DriveSingleThread.java (original)
+++ incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/threading/DriveSingleThread.java Fri May  6 05:54:57 2005
@@ -9,11 +9,9 @@
 
 public class DriveSingleThread extends Thread
 {
-    public final static int LOOPS=10;
     private SingleThreadControlBean myControl;
-    private String method2invoke="";
-    private long records[]=new long[LOOPS];
-
+    private boolean role;
+	private long result=0;
 
     public DriveSingleThread(String name){
 		super(name);
@@ -23,32 +21,15 @@
 		myControl=bean;
 	}
 
-    public void setMethod(String str){
-		method2invoke=str;
+    public void setRole(boolean isBlocker){
+		role=isBlocker;
 	}
 
     public void run() {
-        //System.out.println("DONE! " + getName());
-        for(int i=0;i<LOOPS;i++){
-		    if(method2invoke.equals(SingleThreadControl.METHOD1))
-				records[i]=myControl.method1();
-			else if (method2invoke.equals(SingleThreadControl.METHOD2))
-			    records[i]=myControl.method2();
-		}
-
+		result=myControl.doSlowIncrement(role);
     }
 
-	public Report analyseRecord(){
-
-	    Report report=new Report();
-    	report.setStatus(Report.PASS);
-    	for(int i=0;i<LOOPS;i++){
-			//System.out.println(getName()+">>>>>>>>>>"+records[i]);
-			if (records[i]<SingleThreadControl.EXPECTED_DELAY){
-			    report.setStatus(Report.FAIL);
-			}
-		}
-	    return report;
+	public long getResult(){
+		return result;
 	}
-
 }

Modified: incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/ConstraintTest.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/ConstraintTest.java?rev=168597&r1=168596&r2=168597&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/ConstraintTest.java (original)
+++ incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/ConstraintTest.java Fri May  6 05:54:57 2005
@@ -17,7 +17,7 @@
 
 
 
-@Freq("detailed")
+
 public class ConstraintTest extends TestCase
 {
     public ConstraintTest( String s ) { super( s ); }
@@ -31,7 +31,7 @@
     {
         return new TestBeanContext();
     }
-
+	@Freq("detailed")
 	public void testRule_AT_LEAST_ONE()throws Exception{
 
 		Report report=new Report();
@@ -45,7 +45,7 @@
 		if ((usprice==null)&&(caprice==null)&&(euprice==null))
 			fail("Rule AT_LEAST_ONE is not enforced");
 	}
-
+	@Freq("detailed")
 	public void testRule_AT_MOST_ONE()throws Exception{
 
 		Report report=new Report();
@@ -70,15 +70,27 @@
 		*/
 		try{
 			book.setCoverlanguage("English");
-			book.setContentlanguage("French");
-			fail("AT_MOST_ONE is not enforced");
+			book.setAuthorlanguage("Spanish");
+
+			String cover=book.getCoverlanguage();
+			String author=book.getAuthorlanguage();
+
+			System.out.println("******************************************************");
+			System.out.println(cover);
+			System.out.println(author);
+			System.out.println("******************************************************");
+
+			Assert.assertEquals("English",book.getCoverlanguage());
+			Assert.assertNull(book.getAuthorlanguage());
+
 		}
 		catch(Exception e){
 			e.printStackTrace();
+			fail(e.getMessage());
 
 		}
 	}
-
+	@Freq("detailed")
 	public void testRule_EXACTLY_ONE()throws Exception{
 
 		Report report=new Report();
@@ -101,7 +113,7 @@
 		if (!(count==1))
 			fail("EXACTLY_ONE is not enforced");
 	}
-
+	@Freq("detailed")
 	public void testRule_ALL_IF_ANY()throws Exception{
 
 		Report report=new Report();

Modified: incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/threading/SingleThreadTest.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/threading/SingleThreadTest.java?rev=168597&r1=168596&r2=168597&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/threading/SingleThreadTest.java (original)
+++ incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/threading/SingleThreadTest.java Fri May  6 05:54:57 2005
@@ -42,21 +42,25 @@
 			Thread.currentThread().getContextClassLoader() ,
 			"org.apache.beehive.controls.test.controls.threading.DefaultThreadControlBean");
 
-		DriveDefaultThread driver1=new DriveDefaultThread(DriveDefaultThread.SETTER);
+		DriveDefaultThread driver1=new DriveDefaultThread("DefaultThread-driver1");
 		driver1.setControl(sBean);
-		DriveDefaultThread driver2=new DriveDefaultThread(DriveDefaultThread.GETTER);
+		driver1.setRole(true);
+		DriveDefaultThread driver2=new DriveDefaultThread("DefaultThread-driver2");
 		driver2.setControl(sBean);
+		driver2.setRole(false);
 
 		driver1.start();
+		try{Thread.currentThread().sleep(2000);}
+		catch(InterruptedException e){e.printStackTrace();}
 		driver2.start();
 
-		try{Thread.sleep(1000);}
-		catch(InterruptedException e){}
+		try{Thread.currentThread().sleep(2000);}
+		catch(InterruptedException e){e.printStackTrace();}
 
-		Report report1=driver1.analyseRecord();
-		Report report2=driver2.analyseRecord();
+		long result=driver2.getResult();
 
-		Assert.assertEquals(Report.PASS, report2.getStatus());
+		if (result>0)
+			fail("The control is not singlethreaded");
     }
 
     /**
@@ -71,24 +75,25 @@
 			Thread.currentThread().getContextClassLoader() ,
 			"org.apache.beehive.controls.test.controls.threading.SingleThreadControlBean");
 
-		DriveSingleThread driver1=new DriveSingleThread("SigleThread-driver1");
+		DriveSingleThread driver1=new DriveSingleThread("SingleThread-driver1");
 		driver1.setControl(sBean);
-		driver1.setMethod(SingleThreadControl.METHOD1);
+		driver1.setRole(true);
 		DriveSingleThread driver2=new DriveSingleThread("SingleThread-driver2");
 		driver2.setControl(sBean);
-		driver2.setMethod(SingleThreadControl.METHOD2);
+		driver2.setRole(false);
 
 		driver1.start();
+		try{Thread.currentThread().sleep(2000);}
+		catch(InterruptedException e){e.printStackTrace();}
 		driver2.start();
 
-		try{Thread.sleep(SingleThreadControl.EXPECTED_DELAY*DriveSingleThread.LOOPS*3);}
-		catch(InterruptedException e){}
+		try{Thread.currentThread().sleep(2000);}
+		catch(InterruptedException e){e.printStackTrace();}
 
-		Report report1=driver1.analyseRecord();
-		Report report2=driver2.analyseRecord();
+		long result=driver2.getResult();
 
-		Assert.assertEquals(Report.PASS, report1.getStatus());
-		Assert.assertEquals(Report.PASS, report2.getStatus());
+		if (result>0)
+			fail("The control is not singlethreaded");
     }
 
     @Freq("checkin")