TS-1255 Fix the types for all overridable configs. This was actually a real bug in the code, in that all float configurations were actually treated as integer, rendering them useless
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/f047b43e Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/f047b43e Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/f047b43e Branch: refs/heads/master Commit: f047b43ecd68d107ef8d904e6afe1415fc6507f0 Parents: cba9303 Author: Leif Hedstrom <[email protected]> Authored: Mon Jul 29 20:33:48 2013 +0200 Committer: Leif Hedstrom <[email protected]> Committed: Thu Aug 1 22:42:49 2013 +0200 ---------------------------------------------------------------------- proxy/InkAPI.cc | 31 +++++++++++++++++-------------- proxy/InkAPITest.cc | 38 +++++++++++++++++++++++--------------- 2 files changed, 40 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f047b43e/proxy/InkAPI.cc ---------------------------------------------------------------------- diff --git a/proxy/InkAPI.cc b/proxy/InkAPI.cc index 5b3e728..602c6a0 100644 --- a/proxy/InkAPI.cc +++ b/proxy/InkAPI.cc @@ -7516,6 +7516,7 @@ _conf_to_memberp(TSOverridableConfigKey conf, HttpSM* sm, OverridableDataType *t ret = &sm->t_state.txn_conf->doc_in_cache_skip_dns; break; case TS_CONFIG_HTTP_BACKGROUND_FILL_ACTIVE_TIMEOUT: + typ = OVERRIDABLE_TYPE_INT; ret = &sm->t_state.txn_conf->background_fill_active_timeout; break; case TS_CONFIG_HTTP_RESPONSE_SERVER_STR: @@ -7543,7 +7544,6 @@ _conf_to_memberp(TSOverridableConfigKey conf, HttpSM* sm, OverridableDataType *t ret = &sm->t_state.txn_conf->sock_packet_tos_out; break; case TS_CONFIG_HTTP_INSERT_AGE_IN_RESPONSE: - typ = OVERRIDABLE_TYPE_INT; ret = &sm->t_state.txn_conf->insert_age_in_response; break; case TS_CONFIG_HTTP_CHUNKING_SIZE: @@ -7562,11 +7562,9 @@ _conf_to_memberp(TSOverridableConfigKey conf, HttpSM* sm, OverridableDataType *t ret = &sm->t_state.txn_conf->flow_high_water_mark; break; case TS_CONFIG_HTTP_CACHE_RANGE_LOOKUP: - typ = OVERRIDABLE_TYPE_INT; ret = &sm->t_state.txn_conf->cache_range_lookup; break; case TS_CONFIG_HTTP_NORMALIZE_AE_GZIP: - typ = OVERRIDABLE_TYPE_INT; ret = &sm->t_state.txn_conf->normalize_ae_gzip; break; case TS_CONFIG_HTTP_DEFAULT_BUFFER_SIZE: @@ -7586,7 +7584,6 @@ _conf_to_memberp(TSOverridableConfigKey conf, HttpSM* sm, OverridableDataType *t ret = &sm->t_state.txn_conf->response_hdr_max_size; break; case TS_CONFIG_HTTP_NEGATIVE_REVALIDATING_ENABLED: - typ = OVERRIDABLE_TYPE_INT; ret = &sm->t_state.txn_conf->negative_revalidating_enabled; break; case TS_CONFIG_HTTP_NEGATIVE_REVALIDATING_LIFETIME: @@ -7594,7 +7591,6 @@ _conf_to_memberp(TSOverridableConfigKey conf, HttpSM* sm, OverridableDataType *t ret = &sm->t_state.txn_conf->negative_revalidating_lifetime; break; case TS_CONFIG_HTTP_ACCEPT_ENCODING_FILTER_ENABLED: - typ = OVERRIDABLE_TYPE_INT; ret = &sm->t_state.txn_conf->accept_encoding_filter_enabled; break; @@ -7903,8 +7899,10 @@ TSHttpTxnConfigFind(const char* name, int length, TSOverridableConfigKey *conf, cnf = TS_CONFIG_HTTP_KEEP_ALIVE_ENABLED_OUT; break; case 'y': - if (!strncmp(name, "proxy.config.http.cache.fuzz.probability", length)) + if (!strncmp(name, "proxy.config.http.cache.fuzz.probability", length)) { + typ = TS_RECORDDATATYPE_FLOAT; cnf = TS_CONFIG_HTTP_CACHE_FUZZ_PROBABILITY; + } break; } break; @@ -7972,8 +7970,10 @@ TSHttpTxnConfigFind(const char* name, int length, TSOverridableConfigKey *conf, cnf = TS_CONFIG_HTTP_CACHE_CLUSTER_CACHE_LOCAL; break; case 'r': - if (!strncmp(name, "proxy.config.http.cache.heuristic_lm_factor", length)) + if (!strncmp(name, "proxy.config.http.cache.heuristic_lm_factor", length)) { + typ = TS_RECORDDATATYPE_FLOAT; cnf = TS_CONFIG_HTTP_CACHE_HEURISTIC_LM_FACTOR; + } break; } break; @@ -8068,14 +8068,15 @@ TSHttpTxnConfigFind(const char* name, int length, TSOverridableConfigKey *conf, break; case 't': switch (name[length-4]) { - case '_': + case '_': if (!strncmp(name, "proxy.config.http.transaction_active_timeout_out", length)) cnf = TS_CONFIG_HTTP_TRANSACTION_ACTIVE_TIMEOUT_OUT; break; - case 'e': - if (!strncmp(name, "proxy.config.http.background_fill_active_timeout", length)) - cnf = TS_CONFIG_HTTP_BACKGROUND_FILL_ACTIVE_TIMEOUT; - break; + case 'e': + if (!strncmp(name, "proxy.config.http.background_fill_active_timeout", length)) { + cnf = TS_CONFIG_HTTP_BACKGROUND_FILL_ACTIVE_TIMEOUT; + } + break; } break; } @@ -8115,8 +8116,10 @@ TSHttpTxnConfigFind(const char* name, int length, TSOverridableConfigKey *conf, cnf = TS_CONFIG_HTTP_TRANSACTION_NO_ACTIVITY_TIMEOUT_OUT; break; case 'd': - if (!strncmp(name, "proxy.config.http.background_fill_completed_threshold", length)) - cnf = TS_CONFIG_HTTP_BACKGROUND_FILL_COMPLETED_THRESHOLD; + if (!strncmp(name, "proxy.config.http.background_fill_completed_threshold", length)) { + typ = TS_RECORDDATATYPE_FLOAT; + cnf = TS_CONFIG_HTTP_BACKGROUND_FILL_COMPLETED_THRESHOLD; + } break; } break; http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f047b43e/proxy/InkAPITest.cc ---------------------------------------------------------------------- diff --git a/proxy/InkAPITest.cc b/proxy/InkAPITest.cc index f9a0f83..9bbf6a5 100644 --- a/proxy/InkAPITest.cc +++ b/proxy/InkAPITest.cc @@ -7415,11 +7415,13 @@ REGRESSION_TEST(SDK_API_OVERRIDABLE_CONFIGS) (RegressionTest * test, int /* atyp HttpSM* s = HttpSM::allocate(); bool success = true; TSHttpTxn txnp = reinterpret_cast<TSHttpTxn>(s); - TSMgmtInt ival = 0; - TSMgmtFloat fval; - const char *sval; + InkRand generator(17); + TSMgmtInt ival_read, ival_rand; + TSMgmtFloat fval_read, fval_rand; + const char *sval_read; const char *test_string = "The Apache Traffic Server"; - int tmp_int; + int len; + s->init(); @@ -7438,23 +7440,28 @@ REGRESSION_TEST(SDK_API_OVERRIDABLE_CONFIGS) (RegressionTest * test, int /* atyp success = false; continue; } + // Now check the getters / setters switch (type) { case TS_RECORDDATATYPE_INT: - TSHttpTxnConfigIntSet(txnp, key, 17); - TSHttpTxnConfigIntGet(txnp, key, &ival); - if (17 != ival) { - SDK_RPRINT(test, "TSHttpTxnConfigIntSet", "TestCase1", TC_FAIL, "Failed on %s, expected 17, got %d", conf, ival); + ival_rand = generator.random() % 126; // to fit in a signed byte + TSHttpTxnConfigIntSet(txnp, key, ival_rand); + TSHttpTxnConfigIntGet(txnp, key, &ival_read); + if (ival_rand != ival_read) { + SDK_RPRINT(test, "TSHttpTxnConfigIntSet", "TestCase1", TC_FAIL, "Failed on %s, %d != %d", conf, + ival_read, ival_rand); success = false; continue; } break; case TS_RECORDDATATYPE_FLOAT: - TSHttpTxnConfigFloatSet(txnp, key, 17.17); - TSHttpTxnConfigFloatGet(txnp, key, &fval); - if (17.17 != fval) { - SDK_RPRINT(test, "TSHttpTxnConfigFloatSet", "TestCase1", TC_FAIL, "Failed on %s, expected 17, got %d", conf, ival); + fval_rand = generator.random(); + TSHttpTxnConfigFloatSet(txnp, key, fval_rand); + TSHttpTxnConfigFloatGet(txnp, key, &fval_read); + if (fval_rand != fval_read) { + SDK_RPRINT(test, "TSHttpTxnConfigFloatSet", "TestCase1", TC_FAIL, "Failed on %s, %f != %f", conf, + fval_read, fval_rand); success = false; continue; } @@ -7462,9 +7469,10 @@ REGRESSION_TEST(SDK_API_OVERRIDABLE_CONFIGS) (RegressionTest * test, int /* atyp case TS_RECORDDATATYPE_STRING: TSHttpTxnConfigStringSet(txnp, key, test_string, -1); - TSHttpTxnConfigStringGet(txnp, key, &sval, &tmp_int); - if (test_string != sval) { - SDK_RPRINT(test, "TSHttpTxnConfigStringSet", "TestCase1", TC_FAIL, "Failed on %s, expected 17, got %s", conf, sval); + TSHttpTxnConfigStringGet(txnp, key, &sval_read, &len); + if (test_string != sval_read) { + SDK_RPRINT(test, "TSHttpTxnConfigStringSet", "TestCase1", TC_FAIL, "Failed on %s, %s != %s", conf, + sval_read, test_string); success = false; continue; }
