diff options
author | Randolph Tan <randolph@10gen.com> | 2012-11-05 12:42:23 -0500 |
---|---|---|
committer | Randolph Tan <randolph@10gen.com> | 2012-11-05 13:22:06 -0500 |
commit | f09b71528ade659dd530ba2d3ea8e31dd0993e5a (patch) | |
tree | cb38c2b20709e994da291492e42587cc05c378d2 /src/mongo/util | |
parent | 509199b32dc34f302e1d188a9b35bf7e3a4bd017 (diff) | |
download | mongo-f09b71528ade659dd530ba2d3ea8e31dd0993e5a.tar.gz |
SERVER-7556 Break FailPoint library into smaller pieces
Diffstat (limited to 'src/mongo/util')
-rw-r--r-- | src/mongo/util/fail_point_service.cpp | 37 | ||||
-rw-r--r-- | src/mongo/util/fail_point_service.h | 41 |
2 files changed, 78 insertions, 0 deletions
diff --git a/src/mongo/util/fail_point_service.cpp b/src/mongo/util/fail_point_service.cpp new file mode 100644 index 00000000000..b474810ddaf --- /dev/null +++ b/src/mongo/util/fail_point_service.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2012 10gen Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "mongo/util/fail_point_service.h" + +namespace mongo { + MONGO_FP_DECLARE(dummy); // used by jstests/libs/fail_point.js + + scoped_ptr<FailPointRegistry> _fpRegistry(NULL); + + MONGO_INITIALIZER(FailPointRegistry)(InitializerContext* context) { + _fpRegistry.reset(new FailPointRegistry()); + return Status::OK(); + } + + MONGO_INITIALIZER_GENERAL(AllFailPointsRegistered, (), ())(InitializerContext* context) { + _fpRegistry->freeze(); + return Status::OK(); + } + + FailPointRegistry* getGlobalFailPointRegistry() { + return _fpRegistry.get(); + } +} diff --git a/src/mongo/util/fail_point_service.h b/src/mongo/util/fail_point_service.h new file mode 100644 index 00000000000..57efe73fdd3 --- /dev/null +++ b/src/mongo/util/fail_point_service.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2012 10gen Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/** + * Should NOT be included by other header files. Include only in source files. + */ + +#pragma once + +#include "mongo/base/init.h" +#include "mongo/util/fail_point_registry.h" + +namespace mongo { + /** + * @return the global fail point registry. + */ + FailPointRegistry* getGlobalFailPointRegistry(); + + /** + * Convenience macro for declaring a fail point. Must be used in global scope and + * never in a block with limited scope (ie, inside functions, loops, etc.) + */ + #define MONGO_FP_DECLARE(fp) FailPoint fp; \ + MONGO_INITIALIZER_GENERAL(fp, ("FailPointRegistry"), ("AllFailPointsRegistered")) \ + (::mongo::InitializerContext* context) { \ + return getGlobalFailPointRegistry()->addFailPoint(#fp, &fp); \ + } +} |