11cb0ef41Sopenharmony_ci'use strict';
21cb0ef41Sopenharmony_cirequire('../common');
31cb0ef41Sopenharmony_ciconst assert = require('assert');
41cb0ef41Sopenharmony_ciconst v8 = require('v8');
51cb0ef41Sopenharmony_ci
61cb0ef41Sopenharmony_ciconst s = v8.getHeapStatistics();
71cb0ef41Sopenharmony_ciconst keys = [
81cb0ef41Sopenharmony_ci  'does_zap_garbage',
91cb0ef41Sopenharmony_ci  'external_memory',
101cb0ef41Sopenharmony_ci  'heap_size_limit',
111cb0ef41Sopenharmony_ci  'malloced_memory',
121cb0ef41Sopenharmony_ci  'number_of_detached_contexts',
131cb0ef41Sopenharmony_ci  'number_of_native_contexts',
141cb0ef41Sopenharmony_ci  'peak_malloced_memory',
151cb0ef41Sopenharmony_ci  'total_available_size',
161cb0ef41Sopenharmony_ci  'total_global_handles_size',
171cb0ef41Sopenharmony_ci  'total_heap_size',
181cb0ef41Sopenharmony_ci  'total_heap_size_executable',
191cb0ef41Sopenharmony_ci  'total_physical_size',
201cb0ef41Sopenharmony_ci  'used_global_handles_size',
211cb0ef41Sopenharmony_ci  'used_heap_size'];
221cb0ef41Sopenharmony_ciassert.deepStrictEqual(Object.keys(s).sort(), keys);
231cb0ef41Sopenharmony_cikeys.forEach(function(key) {
241cb0ef41Sopenharmony_ci  assert.strictEqual(typeof s[key], 'number');
251cb0ef41Sopenharmony_ci});
261cb0ef41Sopenharmony_ci
271cb0ef41Sopenharmony_ci
281cb0ef41Sopenharmony_ciconst heapCodeStatistics = v8.getHeapCodeStatistics();
291cb0ef41Sopenharmony_ciconst heapCodeStatisticsKeys = [
301cb0ef41Sopenharmony_ci  'bytecode_and_metadata_size',
311cb0ef41Sopenharmony_ci  'code_and_metadata_size',
321cb0ef41Sopenharmony_ci  'cpu_profiler_metadata_size',
331cb0ef41Sopenharmony_ci  'external_script_source_size'];
341cb0ef41Sopenharmony_ciassert.deepStrictEqual(Object.keys(heapCodeStatistics).sort(),
351cb0ef41Sopenharmony_ci                       heapCodeStatisticsKeys);
361cb0ef41Sopenharmony_ciheapCodeStatisticsKeys.forEach(function(key) {
371cb0ef41Sopenharmony_ci  assert.strictEqual(typeof heapCodeStatistics[key], 'number');
381cb0ef41Sopenharmony_ci});
391cb0ef41Sopenharmony_ci
401cb0ef41Sopenharmony_ci
411cb0ef41Sopenharmony_ciconst expectedHeapSpaces = [
421cb0ef41Sopenharmony_ci  'code_large_object_space',
431cb0ef41Sopenharmony_ci  'code_space',
441cb0ef41Sopenharmony_ci  'large_object_space',
451cb0ef41Sopenharmony_ci  'map_space',
461cb0ef41Sopenharmony_ci  'new_large_object_space',
471cb0ef41Sopenharmony_ci  'new_space',
481cb0ef41Sopenharmony_ci  'old_space',
491cb0ef41Sopenharmony_ci  'read_only_space',
501cb0ef41Sopenharmony_ci];
511cb0ef41Sopenharmony_ciconst heapSpaceStatistics = v8.getHeapSpaceStatistics();
521cb0ef41Sopenharmony_ciconst actualHeapSpaceNames = heapSpaceStatistics.map((s) => s.space_name);
531cb0ef41Sopenharmony_ciassert.deepStrictEqual(actualHeapSpaceNames.sort(), expectedHeapSpaces.sort());
541cb0ef41Sopenharmony_ciheapSpaceStatistics.forEach((heapSpace) => {
551cb0ef41Sopenharmony_ci  assert.strictEqual(typeof heapSpace.space_name, 'string');
561cb0ef41Sopenharmony_ci  assert.strictEqual(typeof heapSpace.space_size, 'number');
571cb0ef41Sopenharmony_ci  assert.strictEqual(typeof heapSpace.space_used_size, 'number');
581cb0ef41Sopenharmony_ci  assert.strictEqual(typeof heapSpace.space_available_size, 'number');
591cb0ef41Sopenharmony_ci  assert.strictEqual(typeof heapSpace.physical_space_size, 'number');
601cb0ef41Sopenharmony_ci});
61