def from_trace_df(cls, trace_df): """Creates a `TraceUsage` object from `trace_df`. Parameters ---------- trace_df: pd.DataFrame The pandas DataFrame containing the raw trace data. Returns ------- TraceUsage A `TraceUsage` object based on the data in `trace_df`. """ mem_allocated = utils.calculate_max_allocated( trace_df, specs.TOTAL_MEM_COL) cpu_allocated = utils.calculate_allocated_from_percentile( trace_df, specs.MAX_CPU_COL, specs.CPU_ALLOC_PERCENTILE) mem_ts = utils.cap_and_clean_values( trace_df, specs.MAX_MEM_COL, mem_allocated) cpu_ts = utils.cap_and_clean_values( trace_df, specs.MAX_CPU_COL, cpu_allocated) return cls(mem_allocated, cpu_allocated, mem_ts, cpu_ts)
def test_with_nan(mock_df): result = cap_and_clean_values(mock_df, "C", 1.0) assert result.tolist() == [1.0, 0.0, 0.1]
def test_with_cap(mock_df): result = cap_and_clean_values(mock_df, "B", 1.0) assert result.tolist() == [1.0, 0.9, 1.0]
def test_with_no_cap(mock_df): result = cap_and_clean_values(mock_df, "A", 1.0) assert result.tolist() == [0.7, 0.6, 0.8]
def test_with_one_element_dataframe(): df = pd.DataFrame({"A": [1.1], "B": [0.7]}) result = cap_and_clean_values(df, "A", 1.0) assert result.tolist() == [1.0]
def test_with_empty_dataframe(): df = pd.DataFrame({"A": [], "B": []}) result = cap_and_clean_values(df, "A", 1.0) assert result.tolist() == []