1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/* 2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more 3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * contributor license agreements. See the NOTICE file distributed with 4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * this work for additional information regarding copyright ownership. 5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * (the "License"); you may not use this file except in compliance with 7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * the License. You may obtain a copy of the License at 8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Unless required by applicable law or agreed to in writing, software 12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * See the License for the specific language governing permissions and 15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * limitations under the License. 16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.lang; 19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.IOException; 21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.InputStream; 22f54d81e0e2d97798b928ba32f5edab5519622f28Neil Fullerimport java.util.ArrayList; 23f54d81e0e2d97798b928ba32f5edab5519622f28Neil Fullerimport java.util.List; 24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Vector; 25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class RuntimeTest extends junit.framework.TestCase { 27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Runtime r = Runtime.getRuntime(); 29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath InputStream is; 31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String s; 33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static boolean flag = false; 35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static boolean ranFinalize = false; 37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath class HasFinalizer { 39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String internalString; 40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath HasFinalizer(String s) { 42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath internalString = s; 43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void finalize() { 47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath internalString = "hit"; 48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void finalize() { 53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (flag) 54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ranFinalize = true; 55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected RuntimeTest createInstance() { 58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new RuntimeTest("FT"); 59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.Runtime#exit(int) 63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_exitI() { 65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.lang.Runtime.exit(int) 66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Can't really test this", true); 67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.Runtime#exec(java.lang.String) 71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_exec() { 73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath boolean success = false; 74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /* successful exec's are tested by java.lang.Process */ 76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Runtime.getRuntime().exec("AnInexistentProgram"); 78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath success = true; 80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue( 82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "failed to throw IOException when exec'ed inexistent program", 83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath success); 84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.Runtime#getRuntime() 88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_getRuntime() { 90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method java.lang.Runtime java.lang.Runtime.getRuntime() 91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Used to test", true); 92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.lang.Runtime#runFinalization() 96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_runFinalization() { 98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.lang.Runtime.runFinalization() 99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath flag = true; 101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath createInstance(); 102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int count = 10; 103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // the gc below likely bogosifies the test, but will have to do for 104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // the moment 105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath while (!ranFinalize && count-- > 0) { 106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath r.gc(); 107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath r.runFinalization(); 108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to run finalization", ranFinalize); 110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 113f54d81e0e2d97798b928ba32f5edab5519622f28Neil Fuller * java.lang.Runtime#freeMemory() / java.lang.Runtime#totalMemory() / 114f54d81e0e2d97798b928ba32f5edab5519622f28Neil Fuller * java.lang.Runtime#maxMemory() 115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 116f54d81e0e2d97798b928ba32f5edab5519622f28Neil Fuller public void test_memory() { 1174c8cbbd148b3478a597ac6bc95c17115fdd865a8Mathieu Chartier assertTrue("freeMemory < 0", r.freeMemory() >= 0); 118f54d81e0e2d97798b928ba32f5edab5519622f28Neil Fuller assertTrue("totalMemory() < freeMemory()", r.totalMemory() >= r.freeMemory()); 119f54d81e0e2d97798b928ba32f5edab5519622f28Neil Fuller assertTrue("maxMemory() < totalMemory()", r.maxMemory() >= r.totalMemory()); 120f54d81e0e2d97798b928ba32f5edab5519622f28Neil Fuller } 121f54d81e0e2d97798b928ba32f5edab5519622f28Neil Fuller 122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public RuntimeTest() { 123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public RuntimeTest(String name) { 126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath super(name); 127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath} 129