test/lib/jdk/test/lib/containers/cgroup/MetricsTester.java
changeset 57647 bcc706c719d7
parent 55484 1cd4d287839b
child 57650 8f067351c370
child 57675 830619e8936c
equal deleted inserted replaced
57646:26f71e24dd24 57647:bcc706c719d7
    24 package jdk.test.lib.containers.cgroup;
    24 package jdk.test.lib.containers.cgroup;
    25 
    25 
    26 import java.io.File;
    26 import java.io.File;
    27 import java.io.FileNotFoundException;
    27 import java.io.FileNotFoundException;
    28 import java.io.IOException;
    28 import java.io.IOException;
       
    29 import java.math.BigInteger;
    29 import java.nio.file.Files;
    30 import java.nio.file.Files;
    30 import java.nio.file.Path;
    31 import java.nio.file.Path;
    31 import java.nio.file.Paths;
    32 import java.nio.file.Paths;
    32 import java.util.Arrays;
    33 import java.util.Arrays;
    33 import java.util.HashMap;
    34 import java.util.HashMap;
   155         }
   156         }
   156     }
   157     }
   157 
   158 
   158     private static long getLongValueFromFile(SubSystem subSystem, String fileName) {
   159     private static long getLongValueFromFile(SubSystem subSystem, String fileName) {
   159         String data = getFileContents(subSystem, fileName);
   160         String data = getFileContents(subSystem, fileName);
   160         return data.isEmpty() ? 0L : Long.parseLong(data);
   161         return data.isEmpty() ? 0L : convertStringToLong(data);
       
   162     }
       
   163 
       
   164     private static long convertStringToLong(String strval) {
       
   165         long retval = 0;
       
   166         if (strval == null) return 0L;
       
   167 
       
   168         try {
       
   169             retval = Long.parseLong(strval);
       
   170         } catch (NumberFormatException e) {
       
   171             // For some properties (e.g. memory.limit_in_bytes) we may overflow the range of signed long.
       
   172             // In this case, return Long.MAX_VALUE
       
   173             BigInteger b = new BigInteger(strval);
       
   174             if (b.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0) {
       
   175                 return Long.MAX_VALUE;
       
   176             }
       
   177         }
       
   178         return retval;
   161     }
   179     }
   162 
   180 
   163     private static long getLongValueFromFile(SubSystem subSystem, String metric, String subMetric) {
   181     private static long getLongValueFromFile(SubSystem subSystem, String metric, String subMetric) {
   164         String stats = getFileContents(subSystem, metric);
   182         String stats = getFileContents(subSystem, metric);
   165         String[] tokens = stats.split("[\\r\\n]+");
   183         String[] tokens = stats.split("[\\r\\n]+");
   166         for (int i = 0; i < tokens.length; i++) {
   184         for (int i = 0; i < tokens.length; i++) {
   167             if (tokens[i].startsWith(subMetric)) {
   185             if (tokens[i].startsWith(subMetric)) {
   168                 return Long.parseLong(tokens[i].split("\\s+")[1]);
   186                 String strval = tokens[i].split("\\s+")[1];
       
   187                 return convertStringToLong(strval);
   169             }
   188             }
   170         }
   189         }
   171         return 0L;
   190         return 0L;
   172     }
   191     }
   173 
   192