Merge "Run setup for full tests only once." into mnc-dev
diff --git a/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/Main.java b/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/Main.java
index f2a039e..bd467ef 100644
--- a/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/Main.java
+++ b/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/Main.java
@@ -34,7 +34,8 @@
 import com.android.layoutlib.bridge.intensive.setup.LayoutPullParser;
 import com.android.utils.ILogger;
 
-import org.junit.Before;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import java.io.File;
@@ -81,11 +82,11 @@
     /** Location of the app's res dir inside {@link #TEST_RES_DIR}*/
     private static final String APP_TEST_RES = APP_TEST_DIR + "/src/main/res";
 
-    private LayoutLog mLayoutLibLog;
-    private FrameworkResources mFrameworkRepo;
-    private ResourceRepository mProjectResources;
-    private ILogger mLogger;
-    private Bridge mBridge;
+    private static LayoutLog sLayoutLibLog;
+    private static FrameworkResources sFrameworkRepo;
+    private static ResourceRepository sProjectResources;
+    private static  ILogger sLogger;
+    private static Bridge sBridge;
 
     static {
         // Test that System Properties are properly set.
@@ -249,15 +250,15 @@
     /**
      * Initialize the bridge and the resource maps.
      */
-    @Before
-    public void setUp() {
+    @BeforeClass
+    public static void setUp() {
         File data_dir = new File(PLATFORM_DIR, "data");
         File res = new File(data_dir, "res");
-        mFrameworkRepo = new FrameworkResources(new FolderWrapper(res));
-        mFrameworkRepo.loadResources();
-        mFrameworkRepo.loadPublicResources(getLogger());
+        sFrameworkRepo = new FrameworkResources(new FolderWrapper(res));
+        sFrameworkRepo.loadResources();
+        sFrameworkRepo.loadPublicResources(getLogger());
 
-        mProjectResources =
+        sProjectResources =
                 new ResourceRepository(new FolderWrapper(TEST_RES_DIR + APP_TEST_RES), false) {
             @NonNull
             @Override
@@ -265,13 +266,13 @@
                 return new ResourceItem(name);
             }
         };
-        mProjectResources.loadResources();
+        sProjectResources.loadResources();
 
         File fontLocation = new File(data_dir, "fonts");
         File buildProp = new File(PLATFORM_DIR, "build.prop");
         File attrs = new File(res, "values" + File.separator + "attrs.xml");
-        mBridge = new Bridge();
-        mBridge.init(ConfigGenerator.loadProperties(buildProp), fontLocation,
+        sBridge = new Bridge();
+        sBridge.init(ConfigGenerator.loadProperties(buildProp), fontLocation,
                 ConfigGenerator.getEnumMap(attrs), getLayoutLog());
     }
 
@@ -288,6 +289,15 @@
         renderAndVerify("allwidgets.xml", "allwidgets.png");
     }
 
+    @AfterClass
+    public static void tearDown() {
+        sLayoutLibLog = null;
+        sFrameworkRepo = null;
+        sProjectResources = null;
+        sLogger = null;
+        sBridge = null;
+    }
+
     /**
      * Create a new rendering session and test that rendering given layout on nexus 5
      * doesn't throw any exceptions and matches the provided image.
@@ -302,7 +312,7 @@
         // TODO: Set up action bar handler properly to test menu rendering.
         // Create session params.
         SessionParams params = getSessionParams(parser, ConfigGenerator.NEXUS_5, layoutLibCallback);
-        RenderSession session = mBridge.createSession(params);
+        RenderSession session = sBridge.createSession(params);
         if (!session.getResult().isSuccess()) {
             getLogger().error(session.getResult().getException(),
                     session.getResult().getErrorMessage());
@@ -328,8 +338,8 @@
             ConfigGenerator configGenerator, LayoutLibTestCallback layoutLibCallback) {
         FolderConfiguration config = configGenerator.getFolderConfig();
         ResourceResolver resourceResolver =
-                ResourceResolver.create(mProjectResources.getConfiguredResources(config),
-                        mFrameworkRepo.getConfiguredResources(config),
+                ResourceResolver.create(sProjectResources.getConfiguredResources(config),
+                        sFrameworkRepo.getConfiguredResources(config),
                         "Theme.Material.Light.DarkActionBar", false);
 
         return new SessionParams(
@@ -344,9 +354,9 @@
                 getLayoutLog());
     }
 
-    private LayoutLog getLayoutLog() {
-        if (mLayoutLibLog == null) {
-            mLayoutLibLog = new LayoutLog() {
+    private static LayoutLog getLayoutLog() {
+        if (sLayoutLibLog == null) {
+            sLayoutLibLog = new LayoutLog() {
                 @Override
                 public void warning(String tag, String message, Object data) {
                     System.out.println("Warning " + tag + ": " + message);
@@ -379,12 +389,12 @@
                 }
             };
         }
-        return mLayoutLibLog;
+        return sLayoutLibLog;
     }
 
-    private ILogger getLogger() {
-        if (mLogger == null) {
-            mLogger = new ILogger() {
+    private static ILogger getLogger() {
+        if (sLogger == null) {
+            sLogger = new ILogger() {
                 @Override
                 public void error(Throwable t, String msgFormat, Object... args) {
                     if (t != null) {
@@ -409,7 +419,7 @@
                 }
             };
         }
-        return mLogger;
+        return sLogger;
     }
 
     private static void failWithMsg(@NonNull String msgFormat, Object... args) {