diff options
Diffstat (limited to 'perfprofd/tests/perfprofdmockutils.cc')
-rw-r--r-- | perfprofd/tests/perfprofdmockutils.cc | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/perfprofd/tests/perfprofdmockutils.cc b/perfprofd/tests/perfprofdmockutils.cc new file mode 100644 index 00000000..f8858090 --- /dev/null +++ b/perfprofd/tests/perfprofdmockutils.cc @@ -0,0 +1,101 @@ +/* +** +** Copyright 2015, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +#define LOG_TAG "perfprofd" + +#include <stdarg.h> +#include <unistd.h> +#include <vector> +#include <string> +#include <assert.h> + +#include <utils/Log.h> + +#include "perfprofdutils.h" + +static std::vector<std::string> *mock_log; + +static void append_to_log(const std::string &s) +{ + assert(mock_log); + mock_log->push_back(s); +} + +void mock_perfprofdutils_init() +{ + assert(!mock_log); + mock_log = new std::vector<std::string>; +} + +void mock_perfprofdutils_finish() +{ + assert(mock_log); + delete mock_log; +} + +std::string mock_perfprofdutils_getlogged() +{ + std::string result; + assert(mock_log); + for (const std::string &s : (*mock_log)) { + result += s; + } + mock_log->clear(); + return result; +} + +extern "C" { + +#define LMAX 8192 + +void perfprofd_mocklog(const char *tag, const char *fmt, va_list ap) +{ + char buffer[LMAX]; + strcpy(buffer, tag); + vsnprintf(buffer+strlen(tag), LMAX, fmt, ap); + std::string b(buffer); b += "\012"; + append_to_log(b); +} + +void perfprofd_log_error(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); + perfprofd_mocklog("E: ", fmt, ap); + va_end(ap); +} + +void perfprofd_log_warning(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); + perfprofd_mocklog("W: ", fmt, ap); + va_end(ap); +} + +void perfprofd_log_info(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); + perfprofd_mocklog("I: ", fmt, ap); + va_end(ap); +} + +} |