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