]> git.uio.no Git - ifi-stolz-refaktor.git/commitdiff
Adding SearchBasedExtractAndMoveMethodChangerBenchmark.
authorErlend Kristiansen <erlenkr@ifi.uio.no>
Wed, 29 Jan 2014 18:55:42 +0000 (19:55 +0100)
committerErlend Kristiansen <erlenkr@ifi.uio.no>
Wed, 29 Jan 2014 18:55:42 +0000 (19:55 +0100)
software/no.uio.ifi.refaktor.benchmark/src/no/uio/ifi/refaktor/benchmark/AbstractSearchBasedExtractAndMoveMethodBenchmark.java
software/no.uio.ifi.refaktor.benchmark/src/no/uio/ifi/refaktor/benchmark/SearchBasedExtractAndMoveMethodAnalysisBenchmark.java
software/no.uio.ifi.refaktor.benchmark/src/no/uio/ifi/refaktor/benchmark/SearchBasedExtractAndMoveMethodChangerBenchmark.java [new file with mode: 0644]
software/no.uio.ifi.refaktor/META-INF/MANIFEST.MF
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/analyze/ProjectWideSearchBasedExtractAndMoveMethodAnalyzer.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/changers/ProjectWideSearchBasedExtractAndMoveMethodChanger.java
software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/changers/SimpleRefactoringPerformer.java

index 9ea68de277216838babe5affd9d360a4fcc80236..44ab2c16a2a9c9e5b936571120cac43b231068fa 100644 (file)
@@ -15,8 +15,8 @@ public abstract class AbstractSearchBasedExtractAndMoveMethodBenchmark {
        private static final String REPOSITORY_FOLDER = createAbsolutePathName(System.getProperty("user.home"), "ifi-stolz-refaktor");
        private static final String PROJECT_PATH = createAbsolutePathName(REPOSITORY_FOLDER, "eclipse_source_code/eclipse.jdt.ui/org.eclipse.jdt.ui");
        private static final int DELAY_IN_SECONDS = Integer.parseInt(System.getProperty("refaktor.delay", "0"));
-       protected static IProject project;
-       protected AnalysisStatistics statistics;
+       private IProject project;
+       private AnalysisStatistics statistics;
 
        private static Path createAbsolutePath(String directoryName, String fileName) {
                return new Path(createAbsolutePathName(directoryName, fileName));
@@ -47,4 +47,11 @@ public abstract class AbstractSearchBasedExtractAndMoveMethodBenchmark {
                }
        }
 
+       protected IProject getProject() {
+               return project;
+       }
+
+       protected AnalysisStatistics getStatistics() {
+               return statistics;
+       }
 }
\ No newline at end of file
index 7b6cc55caede9adf7565e6c10d391f0fc5dda658..871f0cd54db6d7cab3c93ffeba1b457900ef9bba 100644 (file)
@@ -18,7 +18,7 @@ public class SearchBasedExtractAndMoveMethodAnalysisBenchmark extends AbstractSe
 
        @Test
        public void bench() throws Throwable {
-               assertTrue(project.exists());
+               assertTrue(getProject().exists());
 
                try {
                        CompilationUnitCacheManager.activateRecentlyUsedCaching();
@@ -30,7 +30,7 @@ public class SearchBasedExtractAndMoveMethodAnalysisBenchmark extends AbstractSe
        }
 
        private void analyzeProject() throws Throwable {
-               ProjectWideSearchBasedExtractAndMoveMethodAnalyzer analyzer = new ProjectWideSearchBasedExtractAndMoveMethodAnalyzer(project, statistics);
+               ProjectWideSearchBasedExtractAndMoveMethodAnalyzer analyzer = new ProjectWideSearchBasedExtractAndMoveMethodAnalyzer(getProject(), getStatistics());
                try {
                        analyzer.analyze();
                } catch (Throwable t) {
@@ -46,7 +46,7 @@ public class SearchBasedExtractAndMoveMethodAnalysisBenchmark extends AbstractSe
                        RefaktorDebug.println(result);
 
                RefaktorDebug.println("Number of results: " + results.size());
-               RefaktorDebug.println("Time used on analysis: " + statistics.timeSinceStart());
-               RefaktorDebug.println(statistics.getMethodCount() + " methods analyzed");
+               RefaktorDebug.println("Time used on analysis: " + getStatistics().timeSinceStart());
+               RefaktorDebug.println(getStatistics().getMethodCount() + " methods analyzed");
        }
 }
\ No newline at end of file
diff --git a/software/no.uio.ifi.refaktor.benchmark/src/no/uio/ifi/refaktor/benchmark/SearchBasedExtractAndMoveMethodChangerBenchmark.java b/software/no.uio.ifi.refaktor.benchmark/src/no/uio/ifi/refaktor/benchmark/SearchBasedExtractAndMoveMethodChangerBenchmark.java
new file mode 100644 (file)
index 0000000..01662d8
--- /dev/null
@@ -0,0 +1,35 @@
+package no.uio.ifi.refaktor.benchmark;
+
+import static org.junit.Assert.assertTrue;
+import no.uio.ifi.refaktor.changers.ProjectWideSearchBasedExtractAndMoveMethodChanger;
+import no.uio.ifi.refaktor.changers.RefaktorChanger;
+import no.uio.ifi.refaktor.utils.RefaktorDebug;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class SearchBasedExtractAndMoveMethodChangerBenchmark extends AbstractSearchBasedExtractAndMoveMethodBenchmark {
+       
+       @Ignore
+       @Test
+       public void bench() throws Throwable {
+               assertTrue(getProject().exists());
+
+               makeChangeToWorkspace();
+
+               getStatistics().recordTimeUsed();
+               printStatistics();
+       }
+
+       private void makeChangeToWorkspace() throws CoreException {
+               RefaktorChanger changer = new ProjectWideSearchBasedExtractAndMoveMethodChanger(getProject(), getStatistics());
+               changer.checkPreconditions();
+               changer.executeChange(new NullProgressMonitor());
+       }
+
+       private void printStatistics() {
+               RefaktorDebug.println("Time used on analysis and change: " + getStatistics().getTimeUsed());
+       }
+}
\ No newline at end of file
index dc616db23b3530f35d2f8630f2c67e0114d025e3..2d00aeda58168994672be5bd1ea9824cd80a1e64 100644 (file)
@@ -27,6 +27,7 @@ Import-Package: org.eclipse.jdt.internal.corext.refactoring,
  org.eclipse.jdt.internal.corext.refactoring.structure
 Export-Package: no.uio.ifi.refaktor,
  no.uio.ifi.refaktor.analyze,
+ no.uio.ifi.refaktor.changers,
  no.uio.ifi.refaktor.handlers,
  no.uio.ifi.refaktor.utils
 Bundle-ClassPath: bin/,
index bb6c5edd864975fea40e06e1dc818ff51c25eafc..bfd1a5121b66af5d71261b5d1175cfcb461bb5e2 100644 (file)
@@ -12,7 +12,6 @@ import org.eclipse.jdt.core.JavaModelException;
 
 public class ProjectWideSearchBasedExtractAndMoveMethodAnalyzer extends PackageFragmentParentSearchBasedExtractAndMoveMethodAnalyzer {
 
-
        private final IJavaProject javaProject;
 
        public ProjectWideSearchBasedExtractAndMoveMethodAnalyzer(IProject project) {
index c0442c6f4a9cb296ac45832458b69ddeb4e4227b..49648d90c0ffbf08eda320e85aa9d0c004e58bff 100644 (file)
@@ -1,5 +1,6 @@
 package no.uio.ifi.refaktor.changers;
 
+import no.uio.ifi.refaktor.analyze.AnalysisStatistics;
 import no.uio.ifi.refaktor.analyze.ProjectWideSearchBasedExtractAndMoveMethodAnalyzer;
 
 import org.eclipse.core.resources.IProject;
@@ -12,7 +13,11 @@ public class ProjectWideSearchBasedExtractAndMoveMethodChanger implements Refakt
        private SearchBasedAnalyzerChanger changer;
 
        public ProjectWideSearchBasedExtractAndMoveMethodChanger(IProject project) {
-               changer = new SearchBasedAnalyzerChanger(new ProjectWideSearchBasedExtractAndMoveMethodAnalyzer(project));
+               this(project, new AnalysisStatistics());
+       }
+
+       public ProjectWideSearchBasedExtractAndMoveMethodChanger(IProject project, AnalysisStatistics statistics) {
+               changer = new SearchBasedAnalyzerChanger(new ProjectWideSearchBasedExtractAndMoveMethodAnalyzer(project, statistics));
        }
 
        public ProjectWideSearchBasedExtractAndMoveMethodChanger(IJavaProject javaProject) {
index 7f43fda517f4b347e7c9edc733643b402b801a69..37ddfdc2e79b0066d55c82c4578c8c35bb791cb0 100644 (file)
@@ -56,7 +56,7 @@ class SimpleRefactoringPerformer implements RefactoringPerformer {
        private void runPerformChangeOperation() throws CoreException {
                performChangeOperation.run(monitor);
                RefactoringStatus validationStatus = performChangeOperation.getValidationStatus();
-               assertThat("The refactoring was not executed!", validationStatus, notNullValue());
+               assertThat("The refactoring was not executed: " + checkConditionsOperation.getRefactoring(), validationStatus, notNullValue());
                RefaktorDebug.println("Change operation validation status: " + validationStatus.toString().replace("\n", ""));
        }
 }
\ No newline at end of file