You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2010/02/02 00:06:02 UTC
svn commit: r905441 [2/2] - in
/incubator/trafficserver/traffic/branches/dev: iocore/cache/
iocore/cluster/ libinktomi++/ proxy/ proxy/http2/
Modified: incubator/trafficserver/traffic/branches/dev/proxy/RegressionSM.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/branches/dev/proxy/RegressionSM.cc?rev=905441&r1=905440&r2=905441&view=diff
==============================================================================
--- incubator/trafficserver/traffic/branches/dev/proxy/RegressionSM.cc (original)
+++ incubator/trafficserver/traffic/branches/dev/proxy/RegressionSM.cc Mon Feb 1 23:06:01 2010
@@ -68,26 +68,24 @@
}
void RegressionSM::child_done(int astatus) {
- {
- MUTEX_LOCK(l, mutex, this_ethread());
- if (pending_action) {
- pending_action->cancel();
- pending_action = 0;
- }
- ink_assert(nwaiting > 0);
- --nwaiting;
- set_status(astatus);
- }
+ MUTEX_LOCK(l, mutex, this_ethread());
+ ink_assert(nwaiting > 0);
+ --nwaiting;
+ set_status(astatus);
}
int RegressionSM::regression_sm_waiting(int event, void *data) {
if (!nwaiting) {
done(REGRESSION_TEST_NOT_RUN);
delete this;
+ return EVENT_DONE;
}
- else
+ if (par || nwaiting > 1) {
((Event*)data)->schedule_in(REGRESSION_SM_RETRY);
- return EVENT_CONT;
+ return EVENT_CONT;
+ }
+ run();
+ return EVENT_DONE;
}
int RegressionSM::regression_sm_start(int event, void *data) {
@@ -95,16 +93,15 @@
return EVENT_CONT;
}
-RegressionSM *RegressionSM::do_sequential(RegressionSM *sm, ...) {
+RegressionSM *r_sequential(RegressionTest *t, ...) {
RegressionSM *new_sm = new RegressionSM(t);
va_list ap;
- va_start(ap, sm);
+ va_start(ap, t);
new_sm->par = false;
new_sm->rep = false;
new_sm->ichild = 0;
new_sm->nchildren = 0;
new_sm->nwaiting = 0;
- new_sm->children(new_sm->nchildren++) = sm;
while (1) {
RegressionSM *x = va_arg(ap, RegressionSM*);
if (!x) break;
@@ -115,7 +112,7 @@
return new_sm;
}
-RegressionSM *RegressionSM::do_sequential(int an, RegressionSM *sm) {
+RegressionSM *r_sequential(RegressionTest *t, int an, RegressionSM *sm) {
RegressionSM *new_sm = new RegressionSM(t);
new_sm->par = false;
new_sm->rep = true;
@@ -127,16 +124,15 @@
return new_sm;
}
-RegressionSM *RegressionSM::do_parallel(RegressionSM *sm, ...) {
+RegressionSM *r_parallel(RegressionTest *t, ...) {
RegressionSM *new_sm = new RegressionSM(t);
va_list ap;
- va_start(ap, sm);
+ va_start(ap, t);
new_sm->par = true;
new_sm->rep = false;
new_sm->ichild = 0;
new_sm->nchildren = 0;
new_sm->nwaiting = 0;
- new_sm->children(new_sm->nchildren++) = sm;
while (1) {
RegressionSM *x = va_arg(ap, RegressionSM*);
if (!x) break;
@@ -147,7 +143,7 @@
return new_sm;
}
-RegressionSM *RegressionSM::do_parallel(int an, RegressionSM *sm) {
+RegressionSM *r_parallel(RegressionTest *t, int an, RegressionSM *sm) {
RegressionSM *new_sm = new RegressionSM(t);
new_sm->par = true;
new_sm->rep = true;
@@ -162,10 +158,10 @@
void RegressionSM::run() {
{
MUTEX_TRY_LOCK(l, mutex, this_ethread());
- if (!l || nwaiting)
- pending_action = eventProcessor.schedule_in(this, REGRESSION_SM_RETRY);
+ if (!l || nwaiting > 1)
+ goto Lretry;
RegressionSM *x = 0;
- for (; ichild < n; ichild++) {
+ while (ichild < n) {
if (!rep)
x = children[ichild];
else {
@@ -174,11 +170,14 @@
else
x = children[(intptr_t)0];
}
+ if (!ichild) nwaiting++;
x->xrun(this);
- if (!par && nwaiting)
+ ichild++;
+ if (!par && nwaiting > 1)
goto Lretry;
}
}
+ nwaiting--;
if (!nwaiting) {
done(REGRESSION_TEST_NOT_RUN);
delete this;
@@ -189,17 +188,6 @@
pending_action = eventProcessor.schedule_in(this, REGRESSION_SM_RETRY);
}
-void RegressionSM::do_run(RegressionSM *sm) {
- par = false;
- rep = true;
- ichild = 0;
- nchildren = 1;
- children(0) = sm;
- nwaiting = 0;
- n = 1;
- RegressionSM::run();
-}
-
RegressionSM::RegressionSM(const RegressionSM &ao) {
RegressionSM &o = *(RegressionSM*)&ao;
t = o.t;
@@ -214,13 +202,14 @@
ichild = o.ichild;
par = o.par;
rep = o.rep;
+ pending_action = o.pending_action;
ink_assert(status == REGRESSION_TEST_INPROGRESS);
ink_assert(nwaiting == 0);
ink_assert(ichild == 0);
mutex = new_ProxyMutex();
}
-struct ReRegressionSM1 : RegressionSM {
+struct ReRegressionSM : RegressionSM {
virtual void run() {
if (time(NULL) < 1) { // example test
rprintf(t,"impossible");
@@ -228,32 +217,25 @@
} else
done(REGRESSION_TEST_PASSED);
}
- ReRegressionSM1(RegressionTest *at) : RegressionSM(at) {}
- virtual RegressionSM *clone() { return new ReRegressionSM1(*this); }
- ReRegressionSM1(const ReRegressionSM1 &o) {
+ ReRegressionSM(RegressionTest *at) : RegressionSM(at) {}
+ virtual RegressionSM *clone() { return new ReRegressionSM(*this); }
+ ReRegressionSM(const ReRegressionSM &o) {
t = o.t;
}
};
-struct ReRegressionSM2 : RegressionSM {
- virtual void run() {
- do_run(
- do_sequential(
- do_parallel(new ReRegressionSM1(t), new ReRegressionSM1(t), NULL),
- do_sequential(new ReRegressionSM1(t), new ReRegressionSM1(t), NULL),
- do_parallel(3, new ReRegressionSM1(t)),
- do_sequential(3, new ReRegressionSM1(t)),
- do_parallel(
- do_sequential(2, new ReRegressionSM1(t)),
- do_parallel(2, new ReRegressionSM1(t)),
- NULL),
- NULL));
- }
- ReRegressionSM2(RegressionTest *at) : RegressionSM(at) {}
-};
-
REGRESSION_TEST(RegressionSM)(RegressionTest *t, int atype, int *pstatus) {
- ReRegressionSM2 *sm = new ReRegressionSM2(t);
- sm->run_in(pstatus, HRTIME_SECOND);
+ r_sequential(
+ t,
+ r_parallel(t, new ReRegressionSM(t), new ReRegressionSM(t), NULL),
+ r_sequential(t, new ReRegressionSM(t), new ReRegressionSM(t), NULL),
+ r_parallel(t, 3, new ReRegressionSM(t)),
+ r_sequential(t, 3, new ReRegressionSM(t)),
+ r_parallel(
+ t,
+ r_sequential(t, 2, new ReRegressionSM(t)),
+ r_parallel(t, 2, new ReRegressionSM(t)),
+ NULL),
+ NULL)->run(pstatus);
}
Modified: incubator/trafficserver/traffic/branches/dev/proxy/RegressionSM.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/branches/dev/proxy/RegressionSM.h?rev=905441&r1=905440&r2=905441&view=diff
==============================================================================
--- incubator/trafficserver/traffic/branches/dev/proxy/RegressionSM.h (original)
+++ incubator/trafficserver/traffic/branches/dev/proxy/RegressionSM.h Mon Feb 1 23:06:01 2010
@@ -36,19 +36,16 @@
RegressionTest *t; // for use with rprint
+ // methods to override
virtual void run(); // replace with leaf regression
+ virtual RegressionSM *clone() { return new RegressionSM(*this); } // replace for run_xxx(int n,...);
+
+ // public API
void done(int status = REGRESSION_TEST_NOT_RUN);
void run(int *pstatus);
void run_in(int *pstatus, ink_hrtime t);
- void do_run(RegressionSM *sm);
- RegressionSM *do_sequential(RegressionSM *sm, ...); // terminate list in NULL
- RegressionSM *do_sequential(int n, RegressionSM *sm);
- RegressionSM *do_parallel(RegressionSM *sm, ...); // terminate list in NULL
- RegressionSM *do_parallel(int n, RegressionSM *sm);
- virtual RegressionSM *clone() { return new RegressionSM(*this); } // for run_xxx(int n,...);
-
- // Internal
+ // internal
int status;
int *pstatus;
RegressionSM *parent;
@@ -75,4 +72,9 @@
RegressionSM(const RegressionSM &);
};
+RegressionSM *r_sequential(RegressionTest *t, ...); // terminate list in NULL
+RegressionSM *r_sequential(RegressionTest *t, int n, RegressionSM *sm);
+RegressionSM *r_parallel(RegressionTest *t, ...); // terminate list in NULL
+RegressionSM *r_parallel(RegressionTest *t, int n, RegressionSM *sm);
+
#endif
Modified: incubator/trafficserver/traffic/branches/dev/proxy/http2/HttpDebugNames.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/branches/dev/proxy/http2/HttpDebugNames.cc?rev=905441&r1=905440&r2=905441&view=diff
==============================================================================
--- incubator/trafficserver/traffic/branches/dev/proxy/http2/HttpDebugNames.cc (original)
+++ incubator/trafficserver/traffic/branches/dev/proxy/http2/HttpDebugNames.cc Mon Feb 1 23:06:01 2010
@@ -196,8 +196,6 @@
return ("CACHE_EVENT_OPEN_READ");
case CACHE_EVENT_OPEN_READ_FAILED:
return ("CACHE_EVENT_OPEN_READ_FAILED");
- case CACHE_EVENT_OPEN_READ_FAILED_IN_PROGRESS:
- return ("CACHE_EVENT_OPEN_READ_FAILED_IN_PROGRESS");
case CACHE_EVENT_OPEN_WRITE:
return ("CACHE_EVENT_OPEN_WRITE");
case CACHE_EVENT_OPEN_WRITE_FAILED:
@@ -210,10 +208,6 @@
return ("CACHE_EVENT_UPDATE");
case CACHE_EVENT_UPDATE_FAILED:
return ("CACHE_EVENT_UPDATE_FAILED");
-#if 0
- case CACHE_EVENT_LOOKUP_RESPONSE:
- return ("CACHE_EVENT_LOOKUP_RESPONSE");
-#endif
case STAT_PAGE_SUCCESS:
return ("STAT_PAGE_SUCCESS");