dk_yaws/src/dk_yaws.app.src
{application, dk_yaws,
[
{id, "DK-yaws"},
{vsn, "0.1.1"},
{description, "DuoMark embedded yaws webserver"},
{modules, []},
{registered, [dk_yaws_app, dk_yaws_sup, dk_yaws_server]},
{applications, [kernel, stdlib, sasl, gs, appmon]},
{included_applications, [crypto, ssl, inets, yaws]},
{mod, {dk_yaws_app, []}},
{env, []}
]}.
dk_yaws/src/dk_yaws_server.erl
run() ->
GconfList = [{id, ?APP_ID}],
SconfList = get_params(?PARAM_LIST),
Docroot = proplists:get_value(?APP_PARAM_DOCROOT, SconfList),
{ok, SCList, GC, ChildSpecs} =
yaws_api:embedded_start_conf(Docroot, SconfList, GconfList, ?APP_ID),
[supervisor:start_child(dk_yaws_sup, Ch) || Ch <- ChildSpecs],
yaws_api:setconf(GC, SCList),
{ok, self()}.
dk_yaws/rel/files/vm.args
%% vsn parameters
{dk_yaws_vsn, "0.1.1"}.
%% vm.args parameters
{node_cookie, "dk_yaws"}.
{node_name, "dk_yaws@127.0.0.1"}.
%% app.config parameters
{default_port, "8000"}.
{default_ip, "\"0.0.0.0\""}.
{default_docroot, "\"lib/dk_yaws-{{dk_yaws_vsn}}/priv/\""}.
bubba/bubba/priv/index.yaws
< form name="benchmark_request" method="get" >
< select >
< option value="data_access" default> Data Access < /option >
...
< /select >
< input type="button" value="Run Benchmark" onclick="d3_submit()" />
< /form >
function make_url() {
var url = [
window.location, '/bench_results.yaws?',
'bench_type=', form.bench_type.value,
'&bench=', form.bench.value,
...
].join('');
return url;
}
bubba/bubba/priv/index.yaws
function d3_submit() {
d3.json(make_url(), function(json) {
var len = (json && json.results) ? json.results.length : 0;
var data = [];
for (i=0; i < len-1; i++) {
data.push([i, json.results[i].loop_time.ms]);
}
var chart = bubba_time_series_chart()
.x(function(d) {return d[0]})
.y(function(d) {return d[1]});
d3.select(".graph_area")
.datum(data).call(chart);
});
}
bubba/bubba/priv/index.yaws
< erl >
out(A) ->
Query = yaws_api:parse_query(A),
[BenchType, Bench, DataSize, ExecCount, NumTimes]
= [proplists:get_value(Attr, Query)
|| Attr <- ["bench_type", "bench", "datasize",
"num_execs", "test_times"]],
bench(list_to_atom(BenchType), list_to_atom(Bench),
list_to_integer(DataSize), list_to_integer(ExecCount),
list_to_integer(NumTimes)).
bench(data_access, FunType, DataSize, ExecCount, NumTimes) ->
Proplist = bubba_server:access(FunType, DataSize, ExecCount, NumTimes),
{content, "application/json", result_to_json(Proplist)};
...
< /erl >
Use a spacebar or arrow keys to navigate