@@ -50,29 +50,53 @@ def generate_test_data(
5050 json .dump (data , f , indent = 4 )
5151
5252
53- def generate_test_output ():
53+ def generate_test_output_hub ():
5454 """
55- Generate test output based on the test usage and test cost data.
55+ Generate test output grouped by hub based on the test usage and test cost data.
5656 """
5757 with open ("test_data_usage.json" ) as f :
5858 data_usage = json .load (f )
59-
6059 with open ("test_data_cost.json" ) as f :
6160 data_cost = json .load (f )
62-
6361 df_usage = pd .DataFrame (data_usage )
6462 df_cost = pd .DataFrame (data_cost )
65-
6663 total_usage = df_usage .groupby (["date" , "component" , "hub" ])["value" ].transform (
6764 "sum"
6865 )
69-
7066 df_usage ["cost_factor" ] = df_usage ["value" ] / total_usage
71-
7267 merged = df_usage .merge (df_cost , on = ["date" , "component" , "hub" ], how = "left" )
73-
7468 merged ["cost" ] = merged ["cost_factor" ] * merged ["value_y" ]
75-
7669 df_usage ["cost" ] = merged ["cost" ]
70+ df_usage .to_json ("test_output_hub.json" , orient = "records" , indent = 4 )
71+
7772
78- df_usage .to_json ("test_output.json" , orient = "records" , indent = 4 )
73+ def generate_test_output_component ():
74+ """
75+ Generate test output grouped by component based on the test usage and test cost data.
76+ """
77+ with open ("test_data_usage.json" ) as f :
78+ data_usage = json .load (f )
79+ with open ("test_data_cost.json" ) as f :
80+ data_cost = json .load (f )
81+ df_usage = pd .DataFrame (data_usage )
82+ df_usage = df_usage .groupby (["date" , "component" , "user" ], as_index = False ).sum ()
83+ df_cost = pd .DataFrame (data_cost )
84+ df_cost = (
85+ df_cost .groupby (["date" , "component" ], as_index = False )
86+ .sum ()
87+ .drop (columns = ["hub" ])
88+ )
89+ total_usage = df_usage .groupby (["date" , "component" ], as_index = False )[
90+ "value"
91+ ].transform ("sum" )
92+ df_usage ["cost_factor" ] = (
93+ df_usage .groupby (["date" , "component" , "user" ], as_index = False )[
94+ "value"
95+ ].transform ("sum" )
96+ / total_usage
97+ )
98+ merged = df_usage .merge (df_cost , on = ["date" , "component" ], how = "left" )
99+ merged ["cost" ] = merged ["cost_factor" ] * merged ["value_y" ]
100+ df_usage ["cost" ] = merged ["cost" ]
101+ df_usage = df_usage .drop (columns = ["hub" ])
102+ df_usage .to_json ("test_output_component.json" , orient = "records" , indent = 4 )
0 commit comments