--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/utils/tsrc/javasrc/com/nokia/mj/impl/rt/test/JvmPortTest.java Fri Oct 15 12:29:39 2010 +0300
@@ -0,0 +1,282 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+package com.nokia.mj.impl.rt.test;
+
+
+import com.nokia.mj.impl.rt.JvmPort;
+import com.nokia.mj.impl.rt.support.ThreadEventListener;
+import com.nokia.mj.impl.rt.support.NativeMemoryBlock;
+
+public class JvmPortTest extends JvmPort
+{
+
+ public static final int LOADSYSTEMLIBRARY_CALL = 0;
+ public static final int LOADAPPLICATIONCLASS_CALL = 1;
+ public static final int RUNYOUNGGENERATIONGC_CALL = 2;
+ public static final int SETTHREADASDAEMON_CALL = 3;
+ public static final int GETRESOURCEASNATIVEMEMORY_CALL = 4;
+ public static final int DISABLERUNTIMEEXIT_CALL = 5;
+ public static final int ENABLERUNTIMEEXIT_CALL = 6;
+ public static final int EXITVM_CALL = 7;
+ public static final int RUNFINALIZATION_CALL = 8;
+ public static final int ENABLEFINALIZATION_CALL = 9;
+ public static final int SETTHREADEVENTLISTENER_CALL = 10;
+ public static final int ADDRESTRICTEDPACKAGEPREFIXES_CALL = 11;
+ public static final int ADDPROTECTEDPACKAGEPREFIXES_CALL = 12;
+ public static final int APPENDTOCLASSPATH_CALL = 13;
+ public static final int SHRINKJAVAHEAPTOMINIMUM_CALL = 14;
+ public static final int EXPANDJAVAHEAP_CALL = 15;
+
+
+ public static int[] mCalledArr = new int[16];
+ public static int[] mCalledTotalArr = new int[16];
+
+ static
+ {
+ clear();
+ for (int i = 0; i < mCalledTotalArr.length; ++i)
+ {
+ mCalledTotalArr[i] = 0;
+ }
+ }
+
+ public static Object mObj1 = null;
+ public static Object mObj2 = null;
+ public static Object mReturnObj = null;
+ public static Throwable mThrowable = null;
+
+ public static void clear()
+ {
+ for (int i = 0; i < mCalledArr.length; ++i)
+ {
+ mCalledArr[i] = 0;
+ }
+ mObj1 = null;
+ mObj2 = null;
+ mReturnObj = null;
+ mThrowable = null;
+ }
+
+ public static void resetInstance()
+ {
+ sInstance = null;
+ }
+
+ public static boolean allCalled()
+ {
+ for (int i = 0; i < mCalledTotalArr.length; ++i)
+ {
+ if (mCalledTotalArr[i] == 0)
+ {
+ StringBuffer sb = new StringBuffer();
+ for (int j = 0; j < mCalledTotalArr.length; ++j)
+ {
+ sb.append("\n");
+ sb.append(" " + (j + 1) + " == " + mCalledTotalArr[j]);
+ }
+ System.err.println("All calls:"+ sb.toString());
+
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean checkCalls(int checkInd)
+ {
+ for (int i = 0; i < mCalledArr.length; ++i)
+ {
+ if (checkInd == i)
+ {
+ if (mCalledArr[i] != 1)
+ {
+ return false;
+ }
+ }
+ else if (mCalledArr[i] != 0)
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static String print()
+ {
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < mCalledArr.length; ++i)
+ {
+ sb.append("\n");
+ sb.append(" " + (i + 1) + " == " + mCalledArr[i]);
+ }
+ return sb.toString();
+ }
+
+ public static void setSystemPropertyImpl(Object key, Object value)
+ {
+ mPropertiesContainer.setSystemProperty(key, value);
+ }
+
+
+ public void loadSystemLibrary(String libName)
+ {
+ mCalledArr[LOADSYSTEMLIBRARY_CALL]++;
+ mCalledTotalArr[LOADSYSTEMLIBRARY_CALL]++;
+ mObj1 = libName;
+ }
+
+ public Class loadApplicationClass(String name) throws ClassNotFoundException
+ {
+ mCalledArr[LOADAPPLICATIONCLASS_CALL]++;
+ mCalledTotalArr[LOADAPPLICATIONCLASS_CALL]++;
+ if (mThrowable != null)
+ {
+ throw(ClassNotFoundException)mThrowable;
+ }
+ mObj1 = name;
+ sInstance = null;
+ return (Class)mReturnObj;
+ }
+
+ public boolean runYoungGenerationGc()
+ {
+ mCalledArr[RUNYOUNGGENERATIONGC_CALL]++;
+ mCalledTotalArr[RUNYOUNGGENERATIONGC_CALL]++;
+ return ((Boolean)mReturnObj).booleanValue();
+ }
+
+ public void setThreadAsDaemon(Thread thread,
+ boolean daemon)
+ throws IllegalThreadStateException, SecurityException
+ {
+ mCalledArr[SETTHREADASDAEMON_CALL]++;
+ mCalledTotalArr[SETTHREADASDAEMON_CALL]++;
+ if (mThrowable != null)
+ {
+ if (mThrowable instanceof IllegalThreadStateException)
+ {
+ throw(IllegalThreadStateException)mThrowable;
+ }
+ else
+ {
+ throw(SecurityException)mThrowable;
+
+ }
+ }
+ mObj1 = thread;
+ mObj2 = new Boolean(daemon);
+ }
+
+
+ public NativeMemoryBlock getResourceAsNativeMemory(String jarPath,
+ String resName)
+ {
+ mCalledArr[GETRESOURCEASNATIVEMEMORY_CALL]++;
+ mCalledTotalArr[GETRESOURCEASNATIVEMEMORY_CALL]++;
+ mObj1 = jarPath;
+ mObj2 = resName;
+ return (NativeMemoryBlock)mReturnObj;
+ }
+
+
+ public void disableRuntimeExit()
+ {
+ mCalledArr[DISABLERUNTIMEEXIT_CALL]++;
+ mCalledTotalArr[DISABLERUNTIMEEXIT_CALL]++;
+ }
+
+ public void enableRuntimeExit()
+ {
+ mCalledArr[ENABLERUNTIMEEXIT_CALL]++;
+ mCalledTotalArr[ENABLERUNTIMEEXIT_CALL]++;
+ }
+
+ public void exitVm(int status)
+ {
+ mCalledArr[EXITVM_CALL]++;
+ mCalledTotalArr[EXITVM_CALL]++;
+ mObj1 = new Integer(status);
+ }
+
+ public void runFinalization()
+ {
+ mCalledArr[RUNFINALIZATION_CALL]++;
+ mCalledTotalArr[RUNFINALIZATION_CALL]++;
+ }
+
+ public void enableFinalization(Class clazz)
+ {
+ mCalledArr[ENABLEFINALIZATION_CALL]++;
+ mCalledTotalArr[ENABLEFINALIZATION_CALL]++;
+ mObj1 = clazz;
+ }
+
+ public void setThreadEventListener(ThreadEventListener listener)
+ {
+ mCalledArr[SETTHREADEVENTLISTENER_CALL]++;
+ mCalledTotalArr[SETTHREADEVENTLISTENER_CALL]++;
+ mObj1 = listener;
+ }
+
+ public void addRestrictedPackagePrefixes(String[] packageNames)
+ throws SecurityException
+ {
+ mCalledArr[ADDRESTRICTEDPACKAGEPREFIXES_CALL]++;
+ mCalledTotalArr[ADDRESTRICTEDPACKAGEPREFIXES_CALL]++;
+ if (mThrowable != null)
+ {
+ throw(SecurityException)mThrowable;
+ }
+ mObj1 = packageNames;
+ }
+
+ public void addProtectedPackagePrefixes(String[] packageNames)
+ throws SecurityException
+ {
+ mCalledArr[ADDPROTECTEDPACKAGEPREFIXES_CALL]++;
+ mCalledTotalArr[ADDPROTECTEDPACKAGEPREFIXES_CALL]++;
+ if (mThrowable != null)
+ {
+ throw(SecurityException)mThrowable;
+ }
+ mObj1 = packageNames;
+ }
+
+ public void appendToClassPath(String path)
+ {
+ mCalledArr[APPENDTOCLASSPATH_CALL]++;
+ mCalledTotalArr[APPENDTOCLASSPATH_CALL]++;
+ mObj1 = path;
+ }
+
+ public int shrinkJavaHeapToMinimum()
+ {
+ mCalledArr[SHRINKJAVAHEAPTOMINIMUM_CALL]++;
+ mCalledTotalArr[SHRINKJAVAHEAPTOMINIMUM_CALL]++;
+ return ((Integer)mReturnObj).intValue();
+ }
+
+ public int expandJavaHeap(int amount)
+ {
+ mCalledArr[EXPANDJAVAHEAP_CALL]++;
+ mCalledTotalArr[EXPANDJAVAHEAP_CALL]++;
+ mObj1 = new Integer(amount);
+ return ((Integer)mReturnObj).intValue();
+ }
+
+}