javacommons/utils/tsrc/javasrc/com/nokia/mj/impl/rt/support/JvmPortTest.java
author hgs
Fri, 15 Oct 2010 12:29:39 +0300
changeset 80 d6dafc5d983f
permissions -rw-r--r--
v2.2.19_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     1
/*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     3
* All rights reserved.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     8
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    11
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    12
* Contributors:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    13
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    14
* Description:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    15
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    16
*/
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    17
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    18
package com.nokia.mj.impl.rt.support;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    19
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    20
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    21
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    22
import com.nokia.mj.impl.rt.test.UnitTestSuiteCreator;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    23
import com.nokia.mj.impl.rt.support.ShutdownListener;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    24
import com.nokia.mj.impl.rt.support.Jvm;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    25
import com.nokia.mj.impl.rt.support.JvmInternal;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    26
import j2meunit.framework.Test;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    27
import j2meunit.framework.TestCase;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    28
import j2meunit.framework.TestMethod;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    29
import j2meunit.framework.TestSuite;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    30
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    31
import com.nokia.mj.impl.rt.support.prot.ProtectedTest;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    32
/**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    33
 * JvmPort unit tests.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    34
 */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    35
public class JvmPortTest extends TestCase implements UnitTestSuiteCreator
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    36
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    37
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    38
    // Begin j2meunit test framework setup
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    39
    public TestSuite createTestSuite(String[] args)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    40
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    41
        TestSuite suite = new TestSuite(this.getClass().getName());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    42
        String testSelector = "0000000000000000";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    43
        if (args.length > 1 && args[1] != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    44
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    45
            testSelector = args[1]  + "0000000000000000";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    46
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    47
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    48
        if (testSelector.charAt(0) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    49
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    50
            suite.addTest(new JvmPortTest("testLoadSystemLibrary", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    51
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    52
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    53
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    54
                    ((JvmPortTest)tc).testLoadSystemLibrary();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    55
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    56
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    57
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    58
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    59
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    60
        if (testSelector.charAt(0) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    61
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    62
            suite.addTest(new JvmPortTest("testLoadApplicationClass", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    63
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    64
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    65
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    66
                    ((JvmPortTest)tc).testLoadApplicationClass();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    67
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    68
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    69
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    70
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    71
        if (testSelector.charAt(1) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    72
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    73
            suite.addTest(new JvmPortTest("testSetThreadAsDaemon", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    74
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    75
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    76
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    77
                    ((JvmPortTest)tc).testSetThreadAsDaemon();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    78
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    79
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    80
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    81
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    82
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    83
        if (testSelector.charAt(0) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    84
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    85
            suite.addTest(new JvmPortTest("testGetResourceAsNativeMemory", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    86
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    87
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    88
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    89
                    ((JvmPortTest)tc).testGetResourceAsNativeMemory();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    90
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    91
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    92
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    93
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    94
        if (testSelector.charAt(2) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    95
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    96
            suite.addTest(new JvmPortTest("testEnableRuntimeExit", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    97
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    98
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    99
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   100
                    ((JvmPortTest)tc).testEnableRuntimeExit();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   101
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   102
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   103
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   104
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   105
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   106
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   107
        if (testSelector.charAt(0) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   108
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   109
            suite.addTest(new JvmPortTest("testDisableRuntimeExit", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   110
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   111
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   112
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   113
                    ((JvmPortTest)tc).testDisableRuntimeExit();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   114
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   115
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   116
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   117
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   118
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   119
        if (testSelector.charAt(3) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   120
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   121
            suite.addTest(new JvmPortTest("testExitVm", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   122
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   123
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   124
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   125
                    ((JvmPortTest)tc).testExitVm();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   126
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   127
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   128
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   129
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   130
        if (testSelector.charAt(0) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   131
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   132
            suite.addTest(new JvmPortTest("testYoungGenerationGc", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   133
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   134
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   135
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   136
                    ((JvmPortTest)tc).testYoungGenerationGc();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   137
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   138
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   139
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   140
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   141
        if (testSelector.charAt(4) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   142
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   143
            suite.addTest(new JvmPortTest("testFinalization", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   144
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   145
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   146
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   147
                    ((JvmPortTest)tc).testFinalization();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   148
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   149
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   150
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   151
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   152
        if (testSelector.charAt(0) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   153
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   154
            suite.addTest(new JvmPortTest("testSetThreadEventListener", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   155
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   156
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   157
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   158
                    ((JvmPortTest)tc).testSetThreadEventListener();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   159
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   160
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   161
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   162
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   163
        if (testSelector.charAt(8) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   164
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   165
            suite.addTest(new JvmPortTest("testAddRestrictedPackagePrefixes", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   166
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   167
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   168
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   169
                    ((JvmPortTest)tc).testAddRestrictedPackagePrefixes();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   170
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   171
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   172
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   173
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   174
        if (testSelector.charAt(0) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   175
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   176
            suite.addTest(new JvmPortTest("testAddProtectedPackagePrefixes", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   177
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   178
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   179
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   180
                    ((JvmPortTest)tc).testAddProtectedPackagePrefixes();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   181
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   182
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   183
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   184
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   185
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   186
        if (testSelector.charAt(5) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   187
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   188
            suite.addTest(new JvmPortTest("testAppendToClassPath", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   189
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   190
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   191
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   192
                    ((JvmPortTest)tc).testAppendToClassPath();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   193
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   194
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   195
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   196
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   197
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   198
        if (testSelector.charAt(6) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   199
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   200
            suite.addTest(new JvmPortTest("testShrinkJavaHeapToMinimum", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   201
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   202
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   203
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   204
                    ((JvmPortTest)tc).testShrinkJavaHeapToMinimum();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   205
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   206
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   207
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   208
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   209
        if (testSelector.charAt(7) != '0')
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   210
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   211
            suite.addTest(new JvmPortTest("testExpandJavaHeap", new TestMethod()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   212
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   213
                public void run(TestCase tc)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   214
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   215
                    ((JvmPortTest)tc).testExpandJavaHeap();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   216
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   217
            }));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   218
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   219
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   220
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   221
        return suite;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   222
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   223
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   224
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   225
    public JvmPortTest()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   226
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   227
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   228
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   229
    public JvmPortTest(String aTestName, TestMethod aTestMethod)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   230
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   231
        super(aTestName, aTestMethod);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   232
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   233
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   234
    // End j2meunit test framework setup
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   235
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   236
    protected void setUp()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   237
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   238
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   239
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   240
    protected void tearDown()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   241
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   242
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   243
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   244
    private static class ShutdownListenerImpl implements ShutdownListener
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   245
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   246
        public int mShutDownCallCount = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   247
        public void shuttingDown()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   248
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   249
            mShutDownCallCount++;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   250
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   251
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   252
    // Test cases
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   253
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   254
    private void testLoadSystemLibrary()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   255
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   256
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   257
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   258
            //************ Jvm.loadSystemLibrary ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   259
            Jvm.loadSystemLibrary("javacommonutilstest");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   260
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   261
            try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   262
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   263
                Jvm.loadSystemLibrary("nonexisting");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   264
                assertTrue("Call should have failed", false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   265
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   266
            catch (Error e)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   267
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   268
                int ind = e.toString().indexOf("Not able to load library nonexisting.");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   269
                boolean ok = ind >= 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   270
                if (!ok)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   271
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   272
                    // Accept also java.lang.ExceptionInInitializerError.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   273
                    ok = e.toString().startsWith("java.lang.UnsatisfiedLinkError");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   274
//                    ok = e instanceof UnsatisfiedLinkError;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   275
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   276
                assertTrue(e.toString(),  ok);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   277
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   278
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   279
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   280
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   281
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   282
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   283
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   284
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   285
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   286
    private void testLoadApplicationClass()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   287
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   288
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   289
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   290
            //************ Jvm.loadApplicationClass ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   291
            javax.microedition.rms.RecordComparator obj = (javax.microedition.rms.RecordComparator)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   292
                    Jvm.loadApplicationClass("com.nokia.mj.impl.test.jvmporttest.TestClass").newInstance();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   293
            assertTrue("Object was null", obj != null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   294
            int res = obj.compare(null, null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   295
            assertTrue("Incorrect result: " + res, res == 42);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   296
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   297
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   298
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   299
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   300
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   301
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   302
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   303
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   304
    private boolean isCldc()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   305
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   306
        String cldcProp = System.getProperty("com.nokia.jvm.port");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   307
        if (cldcProp != null && cldcProp.equals("j9.JvmPortCldc"))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   308
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   309
            return true;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   310
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   311
        return false;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   312
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   313
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   314
    private void testSetThreadAsDaemon()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   315
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   316
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   317
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   318
            //************ Jvm.setThreadAsDaemon ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   319
            Thread th = new Thread(new Runnable()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   320
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   321
                public void run()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   322
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   323
                    try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   324
                    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   325
                        Thread.sleep(2000);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   326
                    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   327
                    catch (Exception re)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   328
                    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   329
                    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   330
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   331
            });
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   332
            if (isCldc())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   333
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   334
                try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   335
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   336
                    Jvm.setThreadAsDaemon(th, false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   337
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   338
                catch (RuntimeException re)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   339
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   340
                    assertTrue(re.toString(), re.toString().indexOf("Setting thread as non-daemon not supported") >= 0);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   341
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   342
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   343
            else
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   344
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   345
                Jvm.setThreadAsDaemon(th, false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   346
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   347
            Jvm.setThreadAsDaemon(th, true);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   348
            th.start();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   349
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   350
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   351
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   352
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   353
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   354
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   355
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   356
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   357
    private static final String jarFile = "c:\\java\\jvmportapp.jar";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   358
    private static final String jarFile2 = "c:\\java\\jvmportapp2.jar";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   359
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   360
    private void testGetResourceAsNativeMemory()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   361
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   362
        if (!isCldc())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   363
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   364
            return;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   365
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   366
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   367
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   368
            //************ Jvm.getResourceAsNativeMemory ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   369
            NativeMemoryBlock nativeMemory = Jvm.getResourceAsNativeMemory(null, "myres/info.txt");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   370
            assertTrue("NativeMemoryBlock was null", nativeMemory != null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   371
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   372
            NativeMemoryBlock nativeMemory2 = Jvm.getResourceAsNativeMemory(null, "myres/info2.txt");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   373
            assertTrue("NativeMemoryBlock2 was null", nativeMemory2 != null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   374
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   375
            String res = _getResource(nativeMemory.getPointer(), nativeMemory.getSize());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   376
            assertTrue("Incorrect content1: " + res, res.equals("jvmPort(info): The quick brown fox jumps over the lazy dog"));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   377
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   378
            res = _getResource(nativeMemory2.getPointer(), nativeMemory2.getSize());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   379
            assertTrue("Incorrect content2 " + res, res.equals("jvmPort(info2): The quick brown fox jumps over the lazy dog"));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   380
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   381
            nativeMemory.freeMemory();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   382
            nativeMemory2.freeMemory();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   383
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   384
            NativeMemoryBlock nativeMemory3 = Jvm.getResourceAsNativeMemory(jarFile2, "myres/info.txt");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   385
            assertTrue("NativeMemoryBlock3 was null", nativeMemory3 != null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   386
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   387
            NativeMemoryBlock nativeMemory4 = Jvm.getResourceAsNativeMemory(jarFile2, "myres/info2.txt");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   388
            assertTrue("NativeMemoryBlock4 was null", nativeMemory4 != null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   389
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   390
            res = _getResource(nativeMemory3.getPointer(), nativeMemory3.getSize());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   391
            assertTrue("Incorrect content3: " + res, res.equals("jvmPort2(info): The quick brown fox jumps over the lazy dog"));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   392
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   393
            res = _getResource(nativeMemory4.getPointer(), nativeMemory4.getSize());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   394
            assertTrue("Incorrect content4 " + res, res.equals("jvmPort2(info2): The quick brown fox jumps over the lazy dog"));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   395
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   396
            nativeMemory3.freeMemory();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   397
            nativeMemory4.freeMemory();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   398
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   399
            NativeMemoryBlock nativeMemory5 = Jvm.getResourceAsNativeMemory(jarFile2 + "t", "myres/info.txt");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   400
            assertTrue("NativeMemoryBlock5 was not null", nativeMemory5 == null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   401
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   402
            NativeMemoryBlock nativeMemory6 = Jvm.getResourceAsNativeMemory(jarFile2 + "t", "myres/info2.txt");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   403
            assertTrue("NativeMemoryBlock6 was not null", nativeMemory6 == null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   404
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   405
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   406
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   407
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   408
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   409
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   410
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   411
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   412
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   413
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   414
    private void testEnableRuntimeExit()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   415
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   416
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   417
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   418
            //************ JvmInternal.enableRuntimeExit ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   419
            if (isCldc())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   420
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   421
                JvmInternal.enableRuntimeExit();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   422
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   423
            System.exit(40);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   424
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   425
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   426
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   427
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   428
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   429
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   430
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   431
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   432
    private void testDisableRuntimeExit()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   433
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   434
        if (!isCldc())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   435
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   436
            return;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   437
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   438
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   439
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   440
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   441
            //************ JvmInternal.disableRuntimeExit ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   442
            JvmInternal.disableRuntimeExit();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   443
            try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   444
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   445
                System.exit(-123);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   446
                assertTrue("System exit should have failed", false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   447
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   448
            catch (SecurityException se)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   449
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   450
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   451
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   452
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   453
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   454
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   455
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   456
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   457
        JvmInternal.enableRuntimeExit();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   458
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   459
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   460
    private void testExitVm()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   461
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   462
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   463
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   464
            //************ JvmInternal.exitVm ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   465
            JvmInternal.exitVm(42);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   466
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   467
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   468
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   469
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   470
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   471
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   472
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   473
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   474
    private void testYoungGenerationGc()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   475
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   476
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   477
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   478
            //************ JvmInternal.runYoungGenerationGc ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   479
            Runtime rt = Runtime.getRuntime();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   480
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   481
                new FinalizeClass();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   482
                new FinalizeClass();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   483
                new FinalizeClass();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   484
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   485
            long startFree = rt.freeMemory();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   486
            boolean supported = JvmInternal.runYoungGenerationGc();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   487
            long endFree = rt.freeMemory();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   488
            if (supported)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   489
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   490
                assertTrue("endFree (" + endFree + ") <= startFree (" + startFree + ")", startFree < endFree);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   491
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   492
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   493
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   494
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   495
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   496
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   497
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   498
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   499
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   500
    private static class FinalizeClass
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   501
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   502
        private static boolean mFinalized = false;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   503
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   504
        static
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   505
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   506
            JvmInternal.enableFinalization(JvmPortTest.FinalizeClass.class);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   507
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   508
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   509
        protected final void finalize()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   510
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   511
            mFinalized = true;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   512
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   513
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   514
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   515
    private void testFinalization()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   516
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   517
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   518
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   519
            //************ JvmInternal.runYoungGenerationGc ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   520
            FinalizeClass fClass = new FinalizeClass();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   521
            fClass = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   522
            System.gc();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   523
            JvmInternal.runFinalization();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   524
            assertTrue("Class was not finalized", FinalizeClass.mFinalized);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   525
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   526
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   527
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   528
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   529
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   530
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   531
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   532
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   533
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   534
    private class TestListener implements ThreadEventListener
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   535
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   536
        private int startCount = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   537
        private int diedCount = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   538
        private int uncaughtCount = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   539
        private Throwable throwable;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   540
        private Thread throwngThread;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   541
        private Thread newThread;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   542
        private Thread parentThread;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   543
        private Thread dyingThread;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   544
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   545
        public synchronized void threadStarting(Thread newThread, Thread parentThread)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   546
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   547
            startCount++;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   548
            this.newThread = newThread;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   549
            this.parentThread = parentThread;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   550
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   551
        public synchronized void threadDied(Thread thread)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   552
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   553
            diedCount++;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   554
            dyingThread = thread;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   555
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   556
        public synchronized void uncaughtException(Thread thread, Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   557
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   558
            throwngThread = thread;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   559
            throwable = t;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   560
            uncaughtCount++;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   561
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   562
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   563
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   564
    private void testSetThreadEventListener()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   565
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   566
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   567
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   568
            Thread currentThread = Thread.currentThread();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   569
            //************ JvmInternal.setThreadEventListener ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   570
            TestListener listener = new TestListener();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   571
            JvmInternal.setThreadEventListener(listener);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   572
            Thread th = new Thread(new Runnable()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   573
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   574
                public void run() {}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   575
            });
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   576
            th.start();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   577
            Thread.sleep(50);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   578
            assertTrue("new thread not correct(1)", th == listener.newThread);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   579
            assertTrue("parent thread not correct(1)", currentThread == listener.parentThread);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   580
            assertTrue("died thread not correct(1)", th == listener.dyingThread);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   581
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   582
            th = new Thread(new Runnable()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   583
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   584
                public void run() {}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   585
            });
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   586
            th.start();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   587
            Thread.sleep(50);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   588
            assertTrue("new thread not correct(2)", th == listener.newThread);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   589
            assertTrue("parent thread not correct(2)", currentThread == listener.parentThread);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   590
            assertTrue("died thread not correct(2)", th == listener.dyingThread);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   591
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   592
            th = new Thread(new Runnable()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   593
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   594
                public void run() {}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   595
            });
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   596
            th.start();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   597
            Thread.sleep(50);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   598
            assertTrue("new thread not correct(3)", th == listener.newThread);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   599
            assertTrue("parent thread not correct(3)", currentThread == listener.parentThread);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   600
            assertTrue("died thread not correct(3)", th == listener.dyingThread);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   601
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   602
            final RuntimeException re = new RuntimeException("ex");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   603
            th = new Thread(new Runnable()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   604
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   605
                public void run()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   606
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   607
                    throw re;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   608
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   609
            });
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   610
            th.start();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   611
            Thread.sleep(150);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   612
            assertTrue("new thread not correct(4)", th == listener.newThread);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   613
            assertTrue("parent thread not correct(4)", currentThread == listener.parentThread);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   614
            assertTrue("died thread not correct(4)", th == listener.dyingThread);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   615
            assertTrue("Throwable not correct(4)", re == listener.throwable);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   616
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   617
            assertTrue("Start count not correct: " + listener.startCount, listener.startCount == 4);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   618
            assertTrue("End count not correct: " + listener.diedCount, listener.diedCount == 4);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   619
            assertTrue("Throwable count not correct: " + listener.uncaughtCount, listener.uncaughtCount == 1);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   620
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   621
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   622
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   623
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   624
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   625
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   626
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   627
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   628
    private void testAddRestrictedPackagePrefixes()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   629
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   630
        if (!isCldc())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   631
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   632
            return;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   633
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   634
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   635
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   636
            //************ JvmInternal.addRestrictedPackagePrefixes ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   637
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   638
            javax.microedition.rms.RecordComparator obj0 = (javax.microedition.rms.RecordComparator)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   639
                    Jvm.loadApplicationClass("com.nokia.mj.impl.test.jvmporttest2.TestClass").newInstance();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   640
            assertTrue("Object was null", obj0 != null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   641
            int res = obj0.compare(null, new byte[1]);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   642
            assertTrue("Restricted test failed: " + res, res == 0);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   643
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   644
            JvmInternal.addRestrictedPackagePrefixes(new String[] {"com.nokia.mj.impl.rt.support.restricted."});
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   645
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   646
            javax.microedition.rms.RecordComparator obj = (javax.microedition.rms.RecordComparator)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   647
                    Jvm.loadApplicationClass("com.nokia.mj.impl.test.jvmporttest2.TestClass").newInstance();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   648
            assertTrue("Object was null", obj != null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   649
            res = obj.compare(new byte[1], null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   650
            assertTrue("Restricted test failed2: " + res, res == 0);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   651
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   652
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   653
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   654
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   655
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   656
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   657
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   658
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   659
    private void testAddProtectedPackagePrefixes()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   660
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   661
        if (!isCldc())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   662
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   663
            return;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   664
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   665
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   666
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   667
            //************ JvmInternal.addProtectedPackagePrefixes ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   668
            javax.microedition.rms.RecordComparator obj0 = (javax.microedition.rms.RecordComparator)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   669
                    Jvm.loadApplicationClass("com.nokia.mj.impl.test.jvmporttest.TestClass").newInstance();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   670
            assertTrue("Object was null", obj0 != null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   671
            int res = obj0.compare(null, new byte[1]);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   672
            assertTrue("Protected test failed: " + res, res == 0);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   673
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   674
            JvmInternal.addProtectedPackagePrefixes(new String[] {"com.nokia.mj.impl.rt.support.prot."});
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   675
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   676
            javax.microedition.rms.RecordComparator obj = (javax.microedition.rms.RecordComparator)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   677
                    Jvm.loadApplicationClass("com.nokia.mj.impl.test.jvmporttest.TestClass").newInstance();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   678
            assertTrue("Object was null", obj != null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   679
            res = obj.compare(new byte[1], null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   680
            assertTrue("Protected test failed2: " + res, res == 0);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   681
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   682
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   683
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   684
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   685
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   686
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   687
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   688
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   689
    private void testAppendToClassPath()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   690
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   691
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   692
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   693
            //************ JvmInternal.appendToClassPath ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   694
            javax.microedition.rms.RecordComparator obj = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   695
            try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   696
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   697
                obj = (javax.microedition.rms.RecordComparator)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   698
                      Jvm.loadApplicationClass("com.nokia.mj.impl.test.jvmporttest.TestClass").newInstance();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   699
                assertTrue("Shouldn't be found.", false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   700
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   701
            catch (ClassNotFoundException cnfe) {}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   702
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   703
            try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   704
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   705
                obj = (javax.microedition.rms.RecordComparator)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   706
                      Jvm.loadApplicationClass("com.nokia.mj.impl.test.jvmporttest2.TestClass").newInstance();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   707
                assertTrue("Shouldn't be found2.", false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   708
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   709
            catch (ClassNotFoundException cnfe)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   710
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   711
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   712
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   713
            JvmInternal.appendToClassPath(jarFile);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   714
            obj = (javax.microedition.rms.RecordComparator)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   715
                  Jvm.loadApplicationClass("com.nokia.mj.impl.test.jvmporttest.TestClass").newInstance();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   716
            assertTrue("Object was null", obj != null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   717
            int res = obj.compare(null, null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   718
            assertTrue("Incorrect result: " + res, res == 42);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   719
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   720
            try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   721
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   722
                obj = (javax.microedition.rms.RecordComparator)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   723
                      Jvm.loadApplicationClass("com.nokia.mj.impl.test.jvmporttest2.TestClass").newInstance();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   724
                assertTrue("Shouldn't be found3.", false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   725
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   726
            catch (ClassNotFoundException cnfe)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   727
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   728
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   729
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   730
            JvmInternal.appendToClassPath(jarFile2);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   731
            obj = (javax.microedition.rms.RecordComparator)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   732
                  Jvm.loadApplicationClass("com.nokia.mj.impl.test.jvmporttest.TestClass").newInstance();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   733
            assertTrue("Object was null 2", obj != null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   734
            res = obj.compare(null, null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   735
            assertTrue("Incorrect result(2): " + res, res == 42);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   736
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   737
            obj = (javax.microedition.rms.RecordComparator)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   738
                  Jvm.loadApplicationClass("com.nokia.mj.impl.test.jvmporttest2.TestClass").newInstance();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   739
            assertTrue("Object was null 3", obj != null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   740
            res = obj.compare(null, null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   741
            assertTrue("Incorrect result(3): " + res, res == 43);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   742
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   743
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   744
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   745
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   746
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   747
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   748
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   749
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   750
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   751
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   752
    private void testShrinkJavaHeapToMinimum()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   753
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   754
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   755
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   756
            //************ JvmInternal.shrinkJavaHeapToMinimum ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   757
            Object[] o = new Object[10000];
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   758
            assertTrue("Alocation failed: " + o.length, o.length > 0);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   759
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   760
            Runtime rt = Runtime.getRuntime();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   761
            long startTotal = rt.totalMemory();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   762
            o = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   763
            int shrinkAmount = JvmInternal.shrinkJavaHeapToMinimum();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   764
            long endTotal = rt.totalMemory();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   765
            assertTrue("Heap shrink failed: " + shrinkAmount, shrinkAmount > 0);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   766
            assertTrue("Heap shrink failed, total mem was not reduced. endTotal: " + endTotal + ", startTotal: " + startTotal, endTotal < startTotal);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   767
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   768
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   769
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   770
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   771
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   772
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   773
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   774
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   775
    private void testExpandJavaHeap()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   776
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   777
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   778
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   779
            //************ JvmInternal.expandJavaHeap ***************************
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   780
            Runtime rt = Runtime.getRuntime();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   781
            long startTotal = rt.totalMemory();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   782
            final int expandSize = 1024 * 1024;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   783
            int expanded = JvmInternal.expandJavaHeap(expandSize);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   784
            assertTrue("Didn't expand as expected: " + expanded, expandSize == expanded);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   785
            long endTotal = rt.totalMemory();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   786
            assertTrue("Runtime.totalMemory not what expected. startTotal: " + startTotal + ", endTotal: " + endTotal, (endTotal - startTotal) == expandSize);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   787
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   788
        catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   789
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   790
            t.printStackTrace();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   791
            assertTrue(t.toString(), false);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   792
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   793
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   794
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   795
    private native String _getResource(long ptr, int size);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   796
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   797
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   798
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   799