Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 165658 Details for
Bug 301615
[TMF] Implement Request Model
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Request executor update (minor)
RequestExecutor.patch (text/plain), 9.94 KB, created by
Francois Chouinard
on 2010-04-21 17:15:00 EDT
(
hide
)
Description:
Request executor update (minor)
Filename:
MIME Type:
Creator:
Francois Chouinard
Created:
2010-04-21 17:15:00 EDT
Size:
9.94 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.linuxtools.tmf.tests >Index: src/org/eclipse/linuxtools/tmf/tests/request/TmfRequestExecutorTest.java >=================================================================== >--- src/org/eclipse/linuxtools/tmf/tests/request/TmfRequestExecutorTest.java (revision 24612) >+++ src/org/eclipse/linuxtools/tmf/tests/request/TmfRequestExecutorTest.java (working copy) >@@ -12,8 +12,12 @@ > > package org.eclipse.linuxtools.tmf.tests.request; > >+import java.util.concurrent.Executors; >+ > import junit.framework.TestCase; > >+import org.eclipse.linuxtools.tmf.request.TmfRequestExecutor; >+ > /** > * <b><u>TmfRequestExecutorTest</u></b> > * >@@ -21,74 +25,79 @@ > */ > public class TmfRequestExecutorTest extends TestCase { > >+ // ------------------------------------------------------------------------ >+ // Variables >+ // ------------------------------------------------------------------------ >+ >+ // ------------------------------------------------------------------------ >+ // Housekeeping >+ // ------------------------------------------------------------------------ >+ > /** >- * @param name >+ * @param name the test name > */ > public TmfRequestExecutorTest(String name) { > super(name); > } > >- /* (non-Javadoc) >- * @see junit.framework.TestCase#setUp() >- */ >+ @Override > protected void setUp() throws Exception { > super.setUp(); > } > >- /* (non-Javadoc) >- * @see junit.framework.TestCase#tearDown() >- */ >+ @Override > protected void tearDown() throws Exception { > super.tearDown(); > } > >- /** >- * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#TmfRequestExecutor(java.util.concurrent.ExecutorService)}. >- */ >- public void testTmfRequestExecutorExecutorService() { >- fail("Not yet implemented"); >- } >+ // ------------------------------------------------------------------------ >+ // Constructors >+ // ------------------------------------------------------------------------ > > /** > * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#TmfRequestExecutor()}. > */ > public void testTmfRequestExecutor() { >- fail("Not yet implemented"); >- } >+ TmfRequestExecutor executor = new TmfRequestExecutor(); >+ assertTrue("TmfRequestExecutor", executor != null); >+ assertTrue("TmfRequestExecutor", executor instanceof TmfRequestExecutor); >+ assertEquals("toString", "[TmfRequestExecutor(DelegatedExecutorService)]", executor.toString()); > >- /** >- * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#start()}. >- */ >- public void testStart() { >- fail("Not yet implemented"); >+ assertEquals("nbPendingRequests", 0, executor.getNbPendingRequests()); >+ assertFalse("isShutdown", executor.isShutdown()); >+ assertFalse("isTerminated", executor.isTerminated()); > } > > /** >- * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#stop()}. >+ * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#TmfRequestExecutor(java.util.concurrent.ExecutorService)}. > */ >- public void testStop() { >- fail("Not yet implemented"); >- } >+ public void testTmfRequestExecutorExecutorService() { >+ TmfRequestExecutor executor = new TmfRequestExecutor(Executors.newCachedThreadPool()); >+ assertTrue("TmfRequestExecutor", executor != null); >+ assertTrue("TmfRequestExecutor", executor instanceof TmfRequestExecutor); >+ assertEquals("toString", "[TmfRequestExecutor(ThreadPoolExecutor)]", executor.toString()); > >- /** >- * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#execute(java.lang.Runnable)}. >- */ >- public void testExecute() { >- fail("Not yet implemented"); >+ assertEquals("nbPendingRequests", 0, executor.getNbPendingRequests()); >+ assertFalse("isShutdown", executor.isShutdown()); >+ assertFalse("isTerminated", executor.isTerminated()); > } > > /** >- * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#scheduleNext()}. >+ * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#stop()}. > */ >- public void testScheduleNext() { >- fail("Not yet implemented"); >+ public void testStop() { >+ TmfRequestExecutor executor = new TmfRequestExecutor(); >+ executor.stop(); >+ assertEquals("nbPendingRequests", 0, executor.getNbPendingRequests()); >+ assertTrue("isShutdown", executor.isShutdown()); >+ assertTrue("isTerminated", executor.isTerminated()); > } > >- /** >- * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#queueRequest(java.lang.Runnable)}. >- */ >- public void testQueueRequest() { >- fail("Not yet implemented"); >- } >+// /** >+// * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#execute(java.lang.Runnable)}. >+// */ >+// public void testExecute() { >+// fail("Not yet implemented"); >+// } > > } >Index: src/org/eclipse/linuxtools/tmf/tests/request/AllTests.java >=================================================================== >--- src/org/eclipse/linuxtools/tmf/tests/request/AllTests.java (revision 24612) >+++ src/org/eclipse/linuxtools/tmf/tests/request/AllTests.java (working copy) >@@ -14,7 +14,7 @@ > suite.addTestSuite(TmfEventRequestTest.class); > suite.addTestSuite(TmfCoalescedDataRequestTest.class); > suite.addTestSuite(TmfCoalescedEventRequestTest.class); >-// suite.addTestSuite(TmfRequestExecutorTest.class); >+ suite.addTestSuite(TmfRequestExecutorTest.class); > //$JUnit-END$ > return suite; > } >Index: src/org/eclipse/linuxtools/tmf/tests/AllTmfCoreTests.java >=================================================================== >--- src/org/eclipse/linuxtools/tmf/tests/AllTmfCoreTests.java (revision 24612) >+++ src/org/eclipse/linuxtools/tmf/tests/AllTmfCoreTests.java (working copy) >@@ -18,6 +18,7 @@ > import org.eclipse.linuxtools.tmf.tests.request.TmfCoalescedEventRequestTest; > import org.eclipse.linuxtools.tmf.tests.request.TmfDataRequestTest; > import org.eclipse.linuxtools.tmf.tests.request.TmfEventRequestTest; >+import org.eclipse.linuxtools.tmf.tests.request.TmfRequestExecutorTest; > import org.eclipse.linuxtools.tmf.tests.trace.TmfExperimentTest; > import org.eclipse.linuxtools.tmf.tests.trace.TmfMultiTraceExperimentTest; > import org.eclipse.linuxtools.tmf.tests.trace.TmfTraceTest; >@@ -43,7 +44,7 @@ > suite.addTestSuite(TmfEventRequestTest.class); > suite.addTestSuite(TmfCoalescedDataRequestTest.class); > suite.addTestSuite(TmfCoalescedEventRequestTest.class); >-// suite.addTestSuite(TmfRequestExecutorTest.class); >+ suite.addTestSuite(TmfRequestExecutorTest.class); > > suite.addTestSuite(TmfEventProviderTest.class); > suite.addTestSuite(TmfProviderManagerTest.class); >#P org.eclipse.linuxtools.tmf >Index: src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java >=================================================================== >--- src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java (revision 24612) >+++ src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java (working copy) >@@ -26,33 +26,58 @@ > public class TmfRequestExecutor implements Executor { > > private final ExecutorService fExecutor; >- private final Queue<Runnable> fRequests = new LinkedBlockingQueue<Runnable>(); >- private Runnable fRequest; >+ private final Queue<Runnable> fRequestQueue = new LinkedBlockingQueue<Runnable>(); >+ private Runnable fCurrentRequest; > >- public TmfRequestExecutor(ExecutorService executor) { >- fExecutor = executor; >- } >- >+ // ------------------------------------------------------------------------ >+ // Constructors >+ // ------------------------------------------------------------------------ >+ > public TmfRequestExecutor() { > this(Executors.newSingleThreadExecutor()); > } > >- public void start() { >- // Nothing to do >+ public TmfRequestExecutor(ExecutorService executor) { >+ fExecutor = executor; > } > > /** >+ * @return the number of pending requests >+ */ >+ public int getNbPendingRequests() { >+ return fRequestQueue.size(); >+ } >+ >+ /** >+ * @return the shutdown state (i.e. if it is accepting new requests) >+ */ >+ public boolean isShutdown() { >+ return fExecutor.isShutdown(); >+ } >+ >+ /** >+ * @return the termination state >+ */ >+ public boolean isTerminated() { >+ return fExecutor.isTerminated(); >+ } >+ >+ /** > * Stops the executor > */ > public void stop() { > fExecutor.shutdown(); > } > >+ // ------------------------------------------------------------------------ >+ // Operations >+ // ------------------------------------------------------------------------ >+ > /* (non-Javadoc) > * @see java.util.concurrent.Executor#execute(java.lang.Runnable) > */ > public synchronized void execute(final Runnable request) { >- fRequests.offer(new Runnable() { >+ fRequestQueue.offer(new Runnable() { > public void run() { > try { > request.run(); >@@ -61,7 +86,7 @@ > } > } > }); >- if (fRequest == null) { >+ if (fCurrentRequest == null) { > scheduleNext(); > } > } >@@ -70,19 +95,18 @@ > * Executes the next pending request, if applicable. > */ > protected synchronized void scheduleNext() { >- if ((fRequest = fRequests.poll()) != null) { >- fExecutor.execute(fRequest); >+ if ((fCurrentRequest = fRequestQueue.poll()) != null) { >+ fExecutor.execute(fCurrentRequest); > } > } > >- /** >- * Queues the request and schedules it. >- * >- * @param request the request to service >- */ >- public synchronized void queueRequest(Runnable request) { >- fRequests.add(request); >- scheduleNext(); >+ // ------------------------------------------------------------------------ >+ // Object >+ // ------------------------------------------------------------------------ >+ >+ @Override >+ public String toString() { >+ return "[TmfRequestExecutor(" + fExecutor.getClass().getSimpleName() + "" + ")]"; > } > > } >Index: src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java >=================================================================== >--- src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java (revision 24612) >+++ src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java (working copy) >@@ -190,7 +190,7 @@ > request.done(); > } > }; >- fExecutor.queueRequest(thread); >+ fExecutor.execute(thread); > } > > /**
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
fchouinard
:
iplog-
Actions:
View
|
Diff
Attachments on
bug 301615
: 165658