Delete DataLog abstraction, which was almost unused.
Configuration with rtc_enable_data_logging = true was broken in cl
https://codereview.webrtc.org/2054373002/ (which deleted the
FileWrapper::WriteText method), and apparently noone noticed.
BUG=None
Review-Url: https://codereview.webrtc.org/2439473002
Cr-Commit-Position: refs/heads/master@{#14719}
diff --git a/webrtc/build/common.gypi b/webrtc/build/common.gypi
index 849b71f..5bf4004 100644
--- a/webrtc/build/common.gypi
+++ b/webrtc/build/common.gypi
@@ -107,10 +107,6 @@
# Selects fixed-point code where possible.
'prefer_fixed_point%': 0,
- # Enable data logging. Produces text files with data logged within engines
- # which can be easily parsed for offline processing.
- 'enable_data_logging%': 0,
-
# Enables the use of protocol buffers for debug recordings.
'enable_protobuf%': 1,
diff --git a/webrtc/build/webrtc.gni b/webrtc/build/webrtc.gni
index ac03959..e6cf338 100644
--- a/webrtc/build/webrtc.gni
+++ b/webrtc/build/webrtc.gni
@@ -31,10 +31,6 @@
# Selects fixed-point code where possible.
rtc_prefer_fixed_point = false
- # Enable data logging. Produces text files with data logged within engines
- # which can be easily parsed for offline processing.
- rtc_enable_data_logging = false
-
# Enables the use of protocol buffers for debug recordings.
rtc_enable_protobuf = true
diff --git a/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc b/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc
index 876a5ff..6b23a48 100644
--- a/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc
@@ -32,7 +32,6 @@
#include "webrtc/modules/audio_coding/codecs/pcm16b/audio_decoder_pcm16b.h"
#include "webrtc/modules/audio_coding/codecs/pcm16b/audio_encoder_pcm16b.h"
#include "webrtc/modules/audio_coding/neteq/tools/resample_input_audio_file.h"
-#include "webrtc/system_wrappers/include/data_log.h"
#include "webrtc/test/gtest.h"
#include "webrtc/test/testsupport/fileutils.h"
@@ -53,9 +52,6 @@
for (unsigned int n = 0; n < num_samples - delay; ++n) {
ASSERT_NEAR(input[n], output[channels * n + delay], tolerance)
<< "Exit test on first diff; n = " << n;
- DataLog::InsertCell("CodecTest", "input", input[n]);
- DataLog::InsertCell("CodecTest", "output", output[channels * n]);
- DataLog::NextRow("CodecTest");
}
}
@@ -113,19 +109,11 @@
codec_input_rate_hz_ = audio_encoder_->SampleRateHz();
// Create arrays.
ASSERT_GT(data_length_, 0u) << "The test must set data_length_ > 0";
- // Logging to view input and output in Matlab.
- // Use 'gyp -Denable_data_logging=1' to enable logging.
- DataLog::CreateLog();
- DataLog::AddTable("CodecTest");
- DataLog::AddColumn("CodecTest", "input", 1);
- DataLog::AddColumn("CodecTest", "output", 1);
}
virtual void TearDown() {
delete decoder_;
decoder_ = NULL;
- // Close log.
- DataLog::ReturnLog();
}
virtual void InitEncoder() { }
diff --git a/webrtc/system_wrappers/BUILD.gn b/webrtc/system_wrappers/BUILD.gn
index 5033caa..8bed25e 100644
--- a/webrtc/system_wrappers/BUILD.gn
+++ b/webrtc/system_wrappers/BUILD.gn
@@ -21,9 +21,6 @@
"include/cpu_features_wrapper.h",
"include/cpu_info.h",
"include/critical_section_wrapper.h",
- "include/data_log.h",
- "include/data_log_c.h",
- "include/data_log_impl.h",
"include/event_wrapper.h",
"include/field_trial.h",
"include/file_wrapper.h",
@@ -48,7 +45,6 @@
"source/condition_variable_event_win.h",
"source/cpu_features.cc",
"source/cpu_info.cc",
- "source/data_log_c.cc",
"source/event.cc",
"source/event_timer_posix.cc",
"source/event_timer_posix.h",
@@ -75,12 +71,6 @@
"source/trace_win.h",
]
- if (rtc_enable_data_logging) {
- sources += [ "source/data_log.cc" ]
- } else {
- sources += [ "source/data_log_no_op.cc" ]
- }
-
defines = []
libs = []
deps = [
@@ -187,9 +177,6 @@
"source/clock_unittest.cc",
"source/condition_variable_unittest.cc",
"source/critical_section_unittest.cc",
- "source/data_log_c_helpers_unittest.c",
- "source/data_log_c_helpers_unittest.h",
- "source/data_log_helpers_unittest.cc",
"source/event_timer_posix_unittest.cc",
"source/logging_unittest.cc",
"source/metrics_default_unittest.cc",
@@ -199,13 +186,6 @@
"source/stl_util_unittest.cc",
"source/stringize_macros_unittest.cc",
]
- if (rtc_enable_data_logging) {
- sources += [
- "source/data_log_unittest.cc",
- "source/data_log_unittest_disabled.cc",
- ]
- }
-
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
if (!build_with_chromium && is_clang) {
diff --git a/webrtc/system_wrappers/include/data_log.h b/webrtc/system_wrappers/include/data_log.h
deleted file mode 100644
index f6cad88..0000000
--- a/webrtc/system_wrappers/include/data_log.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-// This singleton can be used for logging data for offline processing. Data
-// logged with it can conveniently be parsed and processed with e.g. Matlab.
-//
-// Following is an example of the log file format, starting with the header
-// row at line 1, and the data rows following.
-// col1,col2,col3,multi-value-col4[3],,,col5
-// 123,10.2,-243,1,2,3,100
-// 241,12.3,233,1,2,3,200
-// 13,16.4,-13,1,2,3,300
-//
-// As can be seen in the example, a multi-value-column is specified with the
-// name followed the number of elements it contains. This followed by
-// number of elements - 1 empty columns.
-//
-// Without multi-value-columns this format can be natively by Matlab. With
-// multi-value-columns a small Matlab script is needed, available at
-// trunk/tools/matlab/parseLog.m.
-//
-// Table names and column names are case sensitive.
-
-#ifndef WEBRTC_SYSTEM_WRAPPERS_INCLUDE_DATA_LOG_H_
-#define WEBRTC_SYSTEM_WRAPPERS_INCLUDE_DATA_LOG_H_
-
-#include <string>
-
-#include "webrtc/system_wrappers/include/data_log_impl.h"
-
-namespace webrtc {
-
-class DataLog {
- public:
- // Creates a log which uses a separate thread (referred to as the file
- // writer thread) for writing log rows to file.
- //
- // Calls to this function after the log object has been created will only
- // increment the reference counter.
- static int CreateLog();
-
- // Decrements the reference counter and deletes the log when the counter
- // reaches 0. Should be called equal number of times as successful calls to
- // CreateLog or memory leak will occur.
- static void ReturnLog();
-
- // Combines the string table_name and the integer table_id into a new string
- // table_name + _ + table_id. The new string will be lower-case.
- static std::string Combine(const std::string& table_name, int table_id);
-
- // Adds a new table, with the name table_name, and creates the file, with the
- // name table_name + ".txt", to which the table will be written.
- // table_name is treated in a case sensitive way.
- static int AddTable(const std::string& table_name);
-
- // Adds a new column to a table. The column will be a multi-value-column
- // if multi_value_length is greater than 1.
- // table_name and column_name are treated in a case sensitive way.
- static int AddColumn(const std::string& table_name,
- const std::string& column_name,
- int multi_value_length);
-
- // Inserts a single value into a table with name table_name at the column with
- // name column_name.
- // Note that the ValueContainer makes use of the copy constructor,
- // operator= and operator<< of the type T, and that the template type must
- // implement a deep copy copy constructor and operator=.
- // Copy constructor and operator= must not be disabled for the type T.
- // table_name and column_name are treated in a case sensitive way.
- template<class T>
- static int InsertCell(const std::string& table_name,
- const std::string& column_name,
- T value) {
- DataLogImpl* data_log = DataLogImpl::StaticInstance();
- if (data_log == NULL)
- return -1;
- return data_log->InsertCell(
- table_name,
- column_name,
- new ValueContainer<T>(value));
- }
-
- // Inserts an array of values into a table with name table_name at the
- // column specified by column_name, which must be a multi-value-column.
- // Note that the MultiValueContainer makes use of the copy constructor,
- // operator= and operator<< of the type T, and that the template type
- // must implement a deep copy copy constructor and operator=.
- // Copy constructor and operator= must not be disabled for the type T.
- // table_name and column_name are treated in a case sensitive way.
- template<class T>
- static int InsertCell(const std::string& table_name,
- const std::string& column_name,
- const T* array,
- int length) {
- DataLogImpl* data_log = DataLogImpl::StaticInstance();
- if (data_log == NULL)
- return -1;
- return data_log->InsertCell(
- table_name,
- column_name,
- new MultiValueContainer<T>(array, length));
- }
-
- // For the table with name table_name: Writes the current row to file.
- // Starts a new empty row.
- // table_name is treated in a case-sensitive way.
- static int NextRow(const std::string& table_name);
-};
-
-} // namespace webrtc
-
-#endif // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_DATA_LOG_H_
diff --git a/webrtc/system_wrappers/include/data_log_c.h b/webrtc/system_wrappers/include/data_log_c.h
deleted file mode 100644
index d31e4d9..0000000
--- a/webrtc/system_wrappers/include/data_log_c.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-// This is a pure C wrapper of the DataLog class. The functions are directly
-// mapped here except for InsertCell as C does not support templates.
-// See data_log.h for a description of the functions.
-
-#ifndef SRC_SYSTEM_WRAPPERS_INCLUDE_DATA_LOG_C_H_
-#define SRC_SYSTEM_WRAPPERS_INCLUDE_DATA_LOG_C_H_
-
-#include <stddef.h> // size_t
-
-#include "webrtc/typedefs.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// All char* parameters in this file are expected to be null-terminated
-// character sequences.
-int WebRtcDataLog_CreateLog();
-void WebRtcDataLog_ReturnLog();
-char* WebRtcDataLog_Combine(char* combined_name, size_t combined_len,
- const char* table_name, int table_id);
-int WebRtcDataLog_AddTable(const char* table_name);
-int WebRtcDataLog_AddColumn(const char* table_name, const char* column_name,
- int multi_value_length);
-
-int WebRtcDataLog_InsertCell_int(const char* table_name,
- const char* column_name,
- int value);
-int WebRtcDataLog_InsertArray_int(const char* table_name,
- const char* column_name,
- const int* values,
- int length);
-int WebRtcDataLog_InsertCell_float(const char* table_name,
- const char* column_name,
- float value);
-int WebRtcDataLog_InsertArray_float(const char* table_name,
- const char* column_name,
- const float* values,
- int length);
-int WebRtcDataLog_InsertCell_double(const char* table_name,
- const char* column_name,
- double value);
-int WebRtcDataLog_InsertArray_double(const char* table_name,
- const char* column_name,
- const double* values,
- int length);
-int WebRtcDataLog_InsertCell_int32(const char* table_name,
- const char* column_name,
- int32_t value);
-int WebRtcDataLog_InsertArray_int32(const char* table_name,
- const char* column_name,
- const int32_t* values,
- int length);
-int WebRtcDataLog_InsertCell_uint32(const char* table_name,
- const char* column_name,
- uint32_t value);
-int WebRtcDataLog_InsertArray_uint32(const char* table_name,
- const char* column_name,
- const uint32_t* values,
- int length);
-int WebRtcDataLog_InsertCell_int64(const char* table_name,
- const char* column_name,
- int64_t value);
-int WebRtcDataLog_InsertArray_int64(const char* table_name,
- const char* column_name,
- const int64_t* values,
- int length);
-
-int WebRtcDataLog_NextRow(const char* table_name);
-
-#ifdef __cplusplus
-} // end of extern "C"
-#endif
-
-#endif // SRC_SYSTEM_WRAPPERS_INCLUDE_DATA_LOG_C_H_ // NOLINT
diff --git a/webrtc/system_wrappers/include/data_log_impl.h b/webrtc/system_wrappers/include/data_log_impl.h
deleted file mode 100644
index 6d59fa8..0000000
--- a/webrtc/system_wrappers/include/data_log_impl.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-// This file contains the helper classes for the DataLog APIs. See data_log.h
-// for the APIs.
-//
-// These classes are helper classes used for logging data for offline
-// processing. Data logged with these classes can conveniently be parsed and
-// processed with e.g. Matlab.
-#ifndef WEBRTC_SYSTEM_WRAPPERS_INCLUDE_DATA_LOG_IMPL_H_
-#define WEBRTC_SYSTEM_WRAPPERS_INCLUDE_DATA_LOG_IMPL_H_
-
-#include <map>
-#include <memory>
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include "webrtc/base/platform_thread.h"
-#include "webrtc/typedefs.h"
-
-namespace webrtc {
-
-class CriticalSectionWrapper;
-class EventWrapper;
-class LogTable;
-class RWLockWrapper;
-
-// All container classes need to implement a ToString-function to be
-// writable to file. Enforce this via the Container interface.
-class Container {
- public:
- virtual ~Container() {}
-
- virtual void ToString(std::string* container_string) const = 0;
-};
-
-template<class T>
-class ValueContainer : public Container {
- public:
- explicit ValueContainer(T data) : data_(data) {}
-
- virtual void ToString(std::string* container_string) const {
- *container_string = "";
- std::stringstream ss;
- ss << data_ << ",";
- ss >> *container_string;
- }
-
- private:
- T data_;
-};
-
-template<class T>
-class MultiValueContainer : public Container {
- public:
- MultiValueContainer(const T* data, int length)
- : data_(data, data + length) {
- }
-
- virtual void ToString(std::string* container_string) const {
- *container_string = "";
- std::stringstream ss;
- for (size_t i = 0; i < data_.size(); ++i)
- ss << data_[i] << ",";
- *container_string += ss.str();
- }
-
- private:
- std::vector<T> data_;
-};
-
-class DataLogImpl {
- public:
- ~DataLogImpl();
-
- // The implementation of the CreateLog() method declared in data_log.h.
- // See data_log.h for a description.
- static int CreateLog();
-
- // The implementation of the StaticInstance() method declared in data_log.h.
- // See data_log.h for a description.
- static DataLogImpl* StaticInstance();
-
- // The implementation of the ReturnLog() method declared in data_log.h. See
- // data_log.h for a description.
- static void ReturnLog();
-
- // The implementation of the AddTable() method declared in data_log.h. See
- // data_log.h for a description.
- int AddTable(const std::string& table_name);
-
- // The implementation of the AddColumn() method declared in data_log.h. See
- // data_log.h for a description.
- int AddColumn(const std::string& table_name,
- const std::string& column_name,
- int multi_value_length);
-
- // Inserts a Container into a table with name table_name at the column
- // with name column_name.
- // column_name is treated in a case sensitive way.
- int InsertCell(const std::string& table_name,
- const std::string& column_name,
- const Container* value_container);
-
- // The implementation of the NextRow() method declared in data_log.h. See
- // data_log.h for a description.
- int NextRow(const std::string& table_name);
-
- private:
- DataLogImpl();
-
- // Initializes the DataLogImpl object, allocates and starts the
- // thread file_writer_thread_.
- int Init();
-
- // Write all complete rows in every table to file.
- // This function should only be called by the file_writer_thread_ if that
- // thread is running to avoid race conditions.
- void Flush();
-
- // Run() is called by the thread file_writer_thread_.
- static bool Run(void* obj);
-
- // This function writes data to file. Note, it blocks if there is no data
- // that should be written to file availble. Flush is the non-blocking
- // version of this function.
- void Process();
-
- // Stops the continuous calling of Process().
- void StopThread();
-
- // Collection of tables indexed by the table name as std::string.
- typedef std::map<std::string, LogTable*> TableMap;
- typedef std::unique_ptr<CriticalSectionWrapper> CritSectScopedPtr;
-
- static CritSectScopedPtr crit_sect_;
- static DataLogImpl* instance_;
- int counter_;
- TableMap tables_;
- EventWrapper* flush_event_;
- // This is a unique_ptr so that we don't have to create threads in the no-op
- // impl.
- std::unique_ptr<rtc::PlatformThread> file_writer_thread_;
- RWLockWrapper* tables_lock_;
-};
-
-} // namespace webrtc
-
-#endif // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_DATA_LOG_IMPL_H_
diff --git a/webrtc/system_wrappers/source/data_log.cc b/webrtc/system_wrappers/source/data_log.cc
deleted file mode 100644
index 6d140a7..0000000
--- a/webrtc/system_wrappers/source/data_log.cc
+++ /dev/null
@@ -1,428 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/system_wrappers/include/data_log.h"
-
-#include <assert.h>
-
-#include <algorithm>
-#include <list>
-
-#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/include/event_wrapper.h"
-#include "webrtc/system_wrappers/include/file_wrapper.h"
-#include "webrtc/system_wrappers/include/rw_lock_wrapper.h"
-
-namespace webrtc {
-
-DataLogImpl::CritSectScopedPtr DataLogImpl::crit_sect_(
- CriticalSectionWrapper::CreateCriticalSection());
-
-DataLogImpl* DataLogImpl::instance_ = NULL;
-
-// A Row contains cells, which are indexed by the column names as std::string.
-// The string index is treated in a case sensitive way.
-class Row {
- public:
- Row();
- ~Row();
-
- // Inserts a Container into the cell of the column specified with
- // column_name.
- // column_name is treated in a case sensitive way.
- int InsertCell(const std::string& column_name,
- const Container* value_container);
-
- // Converts the value at the column specified by column_name to a string
- // stored in value_string.
- // column_name is treated in a case sensitive way.
- void ToString(const std::string& column_name, std::string* value_string);
-
- private:
- // Collection of containers indexed by column name as std::string
- typedef std::map<std::string, const Container*> CellMap;
-
- CellMap cells_;
- CriticalSectionWrapper* cells_lock_;
-};
-
-// A LogTable contains multiple rows, where only the latest row is active for
-// editing. The rows are defined by the ColumnMap, which contains the name of
-// each column and the length of the column (1 for one-value-columns and greater
-// than 1 for multi-value-columns).
-class LogTable {
- public:
- LogTable();
- ~LogTable();
-
- // Adds the column with name column_name to the table. The column will be a
- // multi-value-column if multi_value_length is greater than 1.
- // column_name is treated in a case sensitive way.
- int AddColumn(const std::string& column_name, int multi_value_length);
-
- // Buffers the current row while it is waiting to be written to file,
- // which is done by a call to Flush(). A new row is available when the
- // function returns
- void NextRow();
-
- // Inserts a Container into the cell of the column specified with
- // column_name.
- // column_name is treated in a case sensitive way.
- int InsertCell(const std::string& column_name,
- const Container* value_container);
-
- // Creates a log file, named as specified in the string file_name, to
- // where the table will be written when calling Flush().
- int CreateLogFile(const std::string& file_name);
-
- // Write all complete rows to file.
- // May not be called by two threads simultaneously (doing so may result in
- // a race condition). Will be called by the file_writer_thread_ when that
- // thread is running.
- void Flush();
-
- private:
- // Collection of multi_value_lengths indexed by column name as std::string
- typedef std::map<std::string, int> ColumnMap;
- typedef std::list<Row*> RowList;
-
- ColumnMap columns_;
- RowList rows_[2];
- RowList* rows_history_;
- RowList* rows_flush_;
- Row* current_row_;
- FileWrapper* file_;
- bool write_header_;
- CriticalSectionWrapper* table_lock_;
-};
-
-Row::Row()
- : cells_(),
- cells_lock_(CriticalSectionWrapper::CreateCriticalSection()) {
-}
-
-Row::~Row() {
- for (CellMap::iterator it = cells_.begin(); it != cells_.end();) {
- delete it->second;
- // For maps all iterators (except the erased) are valid after an erase
- cells_.erase(it++);
- }
- delete cells_lock_;
-}
-
-int Row::InsertCell(const std::string& column_name,
- const Container* value_container) {
- CriticalSectionScoped synchronize(cells_lock_);
- assert(cells_.count(column_name) == 0);
- if (cells_.count(column_name) > 0)
- return -1;
- cells_[column_name] = value_container;
- return 0;
-}
-
-void Row::ToString(const std::string& column_name,
- std::string* value_string) {
- CriticalSectionScoped synchronize(cells_lock_);
- const Container* container = cells_[column_name];
- if (container == NULL) {
- *value_string = "NaN,";
- return;
- }
- container->ToString(value_string);
-}
-
-LogTable::LogTable()
- : columns_(),
- rows_(),
- rows_history_(&rows_[0]),
- rows_flush_(&rows_[1]),
- current_row_(new Row),
- file_(FileWrapper::Create()),
- write_header_(true),
- table_lock_(CriticalSectionWrapper::CreateCriticalSection()) {
-}
-
-LogTable::~LogTable() {
- for (RowList::iterator row_it = rows_history_->begin();
- row_it != rows_history_->end();) {
- delete *row_it;
- row_it = rows_history_->erase(row_it);
- }
- for (ColumnMap::iterator col_it = columns_.begin();
- col_it != columns_.end();) {
- // For maps all iterators (except the erased) are valid after an erase
- columns_.erase(col_it++);
- }
- if (file_ != NULL) {
- file_->Flush();
- file_->CloseFile();
- delete file_;
- }
- delete current_row_;
- delete table_lock_;
-}
-
-int LogTable::AddColumn(const std::string& column_name,
- int multi_value_length) {
- assert(multi_value_length > 0);
- if (!write_header_) {
- // It's not allowed to add new columns after the header
- // has been written.
- assert(false);
- return -1;
- } else {
- CriticalSectionScoped synchronize(table_lock_);
- if (write_header_)
- columns_[column_name] = multi_value_length;
- else
- return -1;
- }
- return 0;
-}
-
-void LogTable::NextRow() {
- CriticalSectionScoped sync_rows(table_lock_);
- rows_history_->push_back(current_row_);
- current_row_ = new Row;
-}
-
-int LogTable::InsertCell(const std::string& column_name,
- const Container* value_container) {
- CriticalSectionScoped synchronize(table_lock_);
- assert(columns_.count(column_name) > 0);
- if (columns_.count(column_name) == 0)
- return -1;
- return current_row_->InsertCell(column_name, value_container);
-}
-
-int LogTable::CreateLogFile(const std::string& file_name) {
- if (file_name.length() == 0)
- return -1;
- if (file_->is_open())
- return -1;
- // Open with read/write permissions
- return file_->OpenFile(file_name.c_str(), false) ? 0 : -1;
-}
-
-void LogTable::Flush() {
- ColumnMap::iterator column_it;
- bool commit_header = false;
- if (write_header_) {
- CriticalSectionScoped synchronize(table_lock_);
- if (write_header_) {
- commit_header = true;
- write_header_ = false;
- }
- }
- if (commit_header) {
- for (column_it = columns_.begin();
- column_it != columns_.end(); ++column_it) {
- if (column_it->second > 1) {
- file_->WriteText("%s[%u],", column_it->first.c_str(),
- column_it->second);
- for (int i = 1; i < column_it->second; ++i)
- file_->WriteText(",");
- } else {
- file_->WriteText("%s,", column_it->first.c_str());
- }
- }
- if (columns_.size() > 0)
- file_->WriteText("\n");
- }
-
- // Swap the list used for flushing with the list containing the row history
- // and clear the history. We also create a local pointer to the new
- // list used for flushing to avoid race conditions if another thread
- // calls this function while we are writing.
- // We don't want to block the list while we're writing to file.
- {
- CriticalSectionScoped synchronize(table_lock_);
- RowList* tmp = rows_flush_;
- rows_flush_ = rows_history_;
- rows_history_ = tmp;
- rows_history_->clear();
- }
-
- // Write all complete rows to file and delete them
- for (RowList::iterator row_it = rows_flush_->begin();
- row_it != rows_flush_->end();) {
- for (column_it = columns_.begin();
- column_it != columns_.end(); ++column_it) {
- std::string row_string;
- (*row_it)->ToString(column_it->first, &row_string);
- file_->WriteText("%s", row_string.c_str());
- }
- if (columns_.size() > 0)
- file_->WriteText("\n");
- delete *row_it;
- row_it = rows_flush_->erase(row_it);
- }
-}
-
-int DataLog::CreateLog() {
- return DataLogImpl::CreateLog();
-}
-
-void DataLog::ReturnLog() {
- return DataLogImpl::ReturnLog();
-}
-
-std::string DataLog::Combine(const std::string& table_name, int table_id) {
- std::stringstream ss;
- std::string combined_id = table_name;
- std::string number_suffix;
- ss << "_" << table_id;
- ss >> number_suffix;
- combined_id += number_suffix;
- std::transform(combined_id.begin(), combined_id.end(), combined_id.begin(),
- ::tolower);
- return combined_id;
-}
-
-int DataLog::AddTable(const std::string& table_name) {
- DataLogImpl* data_log = DataLogImpl::StaticInstance();
- if (data_log == NULL)
- return -1;
- return data_log->AddTable(table_name);
-}
-
-int DataLog::AddColumn(const std::string& table_name,
- const std::string& column_name,
- int multi_value_length) {
- DataLogImpl* data_log = DataLogImpl::StaticInstance();
- if (data_log == NULL)
- return -1;
- return data_log->DataLogImpl::StaticInstance()->AddColumn(table_name,
- column_name,
- multi_value_length);
-}
-
-int DataLog::NextRow(const std::string& table_name) {
- DataLogImpl* data_log = DataLogImpl::StaticInstance();
- if (data_log == NULL)
- return -1;
- return data_log->DataLogImpl::StaticInstance()->NextRow(table_name);
-}
-
-DataLogImpl::DataLogImpl()
- : counter_(1),
- tables_(),
- flush_event_(EventWrapper::Create()),
- file_writer_thread_(
- new rtc::PlatformThread(DataLogImpl::Run, instance_, "DataLog")),
- tables_lock_(RWLockWrapper::CreateRWLock()) {}
-
-DataLogImpl::~DataLogImpl() {
- StopThread();
- Flush(); // Write any remaining rows
- delete flush_event_;
- for (TableMap::iterator it = tables_.begin(); it != tables_.end();) {
- delete static_cast<LogTable*>(it->second);
- // For maps all iterators (except the erased) are valid after an erase
- tables_.erase(it++);
- }
- delete tables_lock_;
-}
-
-int DataLogImpl::CreateLog() {
- CriticalSectionScoped synchronize(crit_sect_.get());
- if (instance_ == NULL) {
- instance_ = new DataLogImpl();
- return instance_->Init();
- } else {
- ++instance_->counter_;
- }
- return 0;
-}
-
-int DataLogImpl::Init() {
- file_writer_thread_->Start();
- file_writer_thread_->SetPriority(rtc::kHighestPriority);
- return 0;
-}
-
-DataLogImpl* DataLogImpl::StaticInstance() {
- return instance_;
-}
-
-void DataLogImpl::ReturnLog() {
- CriticalSectionScoped synchronize(crit_sect_.get());
- if (instance_ && instance_->counter_ > 1) {
- --instance_->counter_;
- return;
- }
- delete instance_;
- instance_ = NULL;
-}
-
-int DataLogImpl::AddTable(const std::string& table_name) {
- WriteLockScoped synchronize(*tables_lock_);
- // Make sure we don't add a table which already exists
- if (tables_.count(table_name) > 0)
- return -1;
- tables_[table_name] = new LogTable();
- if (tables_[table_name]->CreateLogFile(table_name + ".txt") == -1)
- return -1;
- return 0;
-}
-
-int DataLogImpl::AddColumn(const std::string& table_name,
- const std::string& column_name,
- int multi_value_length) {
- ReadLockScoped synchronize(*tables_lock_);
- if (tables_.count(table_name) == 0)
- return -1;
- return tables_[table_name]->AddColumn(column_name, multi_value_length);
-}
-
-int DataLogImpl::InsertCell(const std::string& table_name,
- const std::string& column_name,
- const Container* value_container) {
- ReadLockScoped synchronize(*tables_lock_);
- assert(tables_.count(table_name) > 0);
- if (tables_.count(table_name) == 0)
- return -1;
- return tables_[table_name]->InsertCell(column_name, value_container);
-}
-
-int DataLogImpl::NextRow(const std::string& table_name) {
- ReadLockScoped synchronize(*tables_lock_);
- if (tables_.count(table_name) == 0)
- return -1;
- tables_[table_name]->NextRow();
- // Signal a complete row
- flush_event_->Set();
- return 0;
-}
-
-void DataLogImpl::Flush() {
- ReadLockScoped synchronize(*tables_lock_);
- for (TableMap::iterator it = tables_.begin(); it != tables_.end(); ++it) {
- it->second->Flush();
- }
-}
-
-bool DataLogImpl::Run(void* obj) {
- static_cast<DataLogImpl*>(obj)->Process();
- return true;
-}
-
-void DataLogImpl::Process() {
- // Wait for a row to be complete
- flush_event_->Wait(WEBRTC_EVENT_INFINITE);
- Flush();
-}
-
-void DataLogImpl::StopThread() {
- flush_event_->Set();
- file_writer_thread_->Stop();
-}
-
-} // namespace webrtc
diff --git a/webrtc/system_wrappers/source/data_log_c.cc b/webrtc/system_wrappers/source/data_log_c.cc
deleted file mode 100644
index 12a0d3f..0000000
--- a/webrtc/system_wrappers/source/data_log_c.cc
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-// This is the pure C wrapper of the DataLog class.
-
-#include "webrtc/system_wrappers/include/data_log_c.h"
-
-#include <string>
-
-#include "webrtc/system_wrappers/include/data_log.h"
-
-extern "C" int WebRtcDataLog_CreateLog() {
- return webrtc::DataLog::CreateLog();
-}
-
-extern "C" void WebRtcDataLog_ReturnLog() {
- return webrtc::DataLog::ReturnLog();
-}
-
-extern "C" char* WebRtcDataLog_Combine(char* combined_name, size_t combined_len,
- const char* table_name, int table_id) {
- if (!table_name) return NULL;
- std::string combined = webrtc::DataLog::Combine(table_name, table_id);
- if (combined.size() >= combined_len) return NULL;
- std::copy(combined.begin(), combined.end(), combined_name);
- combined_name[combined.size()] = '\0';
- return combined_name;
-}
-
-extern "C" int WebRtcDataLog_AddTable(const char* table_name) {
- if (!table_name) return -1;
- return webrtc::DataLog::AddTable(table_name);
-}
-
-extern "C" int WebRtcDataLog_AddColumn(const char* table_name,
- const char* column_name,
- int multi_value_length) {
- if (!table_name || !column_name) return -1;
- return webrtc::DataLog::AddColumn(table_name, column_name,
- multi_value_length);
-}
-
-extern "C" int WebRtcDataLog_InsertCell_int(const char* table_name,
- const char* column_name,
- int value) {
- if (!table_name || !column_name) return -1;
- return webrtc::DataLog::InsertCell(table_name, column_name, value);
-}
-
-extern "C" int WebRtcDataLog_InsertArray_int(const char* table_name,
- const char* column_name,
- const int* values,
- int length) {
- if (!table_name || !column_name) return -1;
- return webrtc::DataLog::InsertCell(table_name, column_name, values, length);
-}
-
-extern "C" int WebRtcDataLog_InsertCell_float(const char* table_name,
- const char* column_name,
- float value) {
- if (!table_name || !column_name) return -1;
- return webrtc::DataLog::InsertCell(table_name, column_name, value);
-}
-
-extern "C" int WebRtcDataLog_InsertArray_float(const char* table_name,
- const char* column_name,
- const float* values,
- int length) {
- if (!table_name || !column_name) return -1;
- return webrtc::DataLog::InsertCell(table_name, column_name, values, length);
-}
-
-extern "C" int WebRtcDataLog_InsertCell_double(const char* table_name,
- const char* column_name,
- double value) {
- if (!table_name || !column_name) return -1;
- return webrtc::DataLog::InsertCell(table_name, column_name, value);
-}
-
-extern "C" int WebRtcDataLog_InsertArray_double(const char* table_name,
- const char* column_name,
- const double* values,
- int length) {
- if (!table_name || !column_name) return -1;
- return webrtc::DataLog::InsertCell(table_name, column_name, values, length);
-}
-
-extern "C" int WebRtcDataLog_InsertCell_int32(const char* table_name,
- const char* column_name,
- int32_t value) {
- if (!table_name || !column_name) return -1;
- return webrtc::DataLog::InsertCell(table_name, column_name, value);
-}
-
-extern "C" int WebRtcDataLog_InsertArray_int32(const char* table_name,
- const char* column_name,
- const int32_t* values,
- int length) {
- if (!table_name || !column_name) return -1;
- return webrtc::DataLog::InsertCell(table_name, column_name, values, length);
-}
-
-extern "C" int WebRtcDataLog_InsertCell_uint32(const char* table_name,
- const char* column_name,
- uint32_t value) {
- if (!table_name || !column_name) return -1;
- return webrtc::DataLog::InsertCell(table_name, column_name, value);
-}
-
-extern "C" int WebRtcDataLog_InsertArray_uint32(const char* table_name,
- const char* column_name,
- const uint32_t* values,
- int length) {
- if (!table_name || !column_name) return -1;
- return webrtc::DataLog::InsertCell(table_name, column_name, values, length);
-}
-
-extern "C" int WebRtcDataLog_InsertCell_int64(const char* table_name,
- const char* column_name,
- int64_t value) {
- if (!table_name || !column_name) return -1;
- return webrtc::DataLog::InsertCell(table_name, column_name, value);
-}
-
-extern "C" int WebRtcDataLog_InsertArray_int64(const char* table_name,
- const char* column_name,
- const int64_t* values,
- int length) {
- if (!table_name || !column_name) return -1;
- return webrtc::DataLog::InsertCell(table_name, column_name, values, length);
-}
-
-extern "C" int WebRtcDataLog_NextRow(const char* table_name) {
- if (!table_name) return -1;
- return webrtc::DataLog::NextRow(table_name);
-}
diff --git a/webrtc/system_wrappers/source/data_log_c_helpers_unittest.c b/webrtc/system_wrappers/source/data_log_c_helpers_unittest.c
deleted file mode 100644
index cd1ff72..0000000
--- a/webrtc/system_wrappers/source/data_log_c_helpers_unittest.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/system_wrappers/source/data_log_c_helpers_unittest.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "webrtc/system_wrappers/include/data_log_c.h"
-
-enum { kTestArrayLen = 4 };
-static const char kTableName[] = "c_wrapper_table";
-static const char kColumnName1[] = "Scalar";
-static const char kColumnName2[] = "Vector";
-
-int WebRtcDataLogCHelper_TestCreateLog() {
- return WebRtcDataLog_CreateLog();
-}
-
-int WebRtcDataLogCHelper_TestReturnLog() {
- WebRtcDataLog_ReturnLog();
- return 0;
-}
-
-int WebRtcDataLogCHelper_TestCombine() {
- const int kOutLen = strlen(kTableName) + 4; // Room for "_17" + '\0'
- char* combined_name = malloc(kOutLen * sizeof(char));
- char* out_ptr = WebRtcDataLog_Combine(combined_name, kOutLen, kTableName, 17);
- int return_code = 0;
- if (!out_ptr) {
- return_code = -1;
- }
- if (strcmp(combined_name, "c_wrapper_table_17") != 0) {
- return_code = -2;
- }
- free(combined_name);
- return return_code;
-}
-
-int WebRtcDataLogCHelper_TestAddTable() {
- return WebRtcDataLog_AddTable(kTableName);
-}
-
-int WebRtcDataLogCHelper_TestAddColumn() {
- if (WebRtcDataLog_AddColumn(kTableName, kColumnName1, 1) != 0) {
- return -1;
- }
- if (WebRtcDataLog_AddColumn(kTableName, kColumnName2, kTestArrayLen) != 0) {
- return -2;
- }
- return 0;
-}
-
-int WebRtcDataLogCHelper_TestNextRow() {
- return WebRtcDataLog_NextRow(kTableName);
-}
-
-int WebRtcDataLogCHelper_TestInsertCell_int() {
- return WebRtcDataLog_InsertCell_int(kTableName, kColumnName1, 17);
-}
-
-int WebRtcDataLogCHelper_TestInsertArray_int() {
- int values[kTestArrayLen] = {1, 2, 3, 4};
- return WebRtcDataLog_InsertArray_int(kTableName, kColumnName2, values,
- kTestArrayLen);
-}
-
-int WebRtcDataLogCHelper_TestInsertCell_float() {
- return WebRtcDataLog_InsertCell_float(kTableName, kColumnName1, 17.0f);
-}
-
-int WebRtcDataLogCHelper_TestInsertArray_float() {
- float values[kTestArrayLen] = {1.0f, 2.0f, 3.0f, 4.0f};
- return WebRtcDataLog_InsertArray_float(kTableName, kColumnName2, values,
- kTestArrayLen);
-}
-
-int WebRtcDataLogCHelper_TestInsertCell_double() {
- return WebRtcDataLog_InsertCell_int(kTableName, kColumnName1, 17.0);
-}
-
-int WebRtcDataLogCHelper_TestInsertArray_double() {
- double values[kTestArrayLen] = {1.0, 2.0, 3.0, 4.0};
- return WebRtcDataLog_InsertArray_double(kTableName, kColumnName2, values,
- kTestArrayLen);
-}
-
-int WebRtcDataLogCHelper_TestInsertCell_int32() {
- return WebRtcDataLog_InsertCell_int32(kTableName, kColumnName1, 17);
-}
-
-int WebRtcDataLogCHelper_TestInsertArray_int32() {
- int32_t values[kTestArrayLen] = {1, 2, 3, 4};
- return WebRtcDataLog_InsertArray_int32(kTableName, kColumnName2, values,
- kTestArrayLen);
-}
-
-int WebRtcDataLogCHelper_TestInsertCell_uint32() {
- return WebRtcDataLog_InsertCell_uint32(kTableName, kColumnName1, 17);
-}
-
-int WebRtcDataLogCHelper_TestInsertArray_uint32() {
- uint32_t values[kTestArrayLen] = {1, 2, 3, 4};
- return WebRtcDataLog_InsertArray_uint32(kTableName, kColumnName2, values,
- kTestArrayLen);
-}
-
-int WebRtcDataLogCHelper_TestInsertCell_int64() {
- return WebRtcDataLog_InsertCell_int64(kTableName, kColumnName1, 17);
-}
-
-int WebRtcDataLogCHelper_TestInsertArray_int64() {
- int64_t values[kTestArrayLen] = {1, 2, 3, 4};
- return WebRtcDataLog_InsertArray_int64(kTableName, kColumnName2, values,
- kTestArrayLen);
-}
diff --git a/webrtc/system_wrappers/source/data_log_c_helpers_unittest.h b/webrtc/system_wrappers/source/data_log_c_helpers_unittest.h
deleted file mode 100644
index ef86eae..0000000
--- a/webrtc/system_wrappers/source/data_log_c_helpers_unittest.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef SRC_SYSTEM_WRAPPERS_SOURCE_DATA_LOG_C_HELPERS_UNITTEST_H_
-#define SRC_SYSTEM_WRAPPERS_SOURCE_DATA_LOG_C_HELPERS_UNITTEST_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int WebRtcDataLogCHelper_TestCreateLog();
-
-int WebRtcDataLogCHelper_TestReturnLog();
-
-int WebRtcDataLogCHelper_TestCombine();
-
-int WebRtcDataLogCHelper_TestAddTable();
-
-int WebRtcDataLogCHelper_TestAddColumn();
-
-int WebRtcDataLogCHelper_TestNextRow();
-
-int WebRtcDataLogCHelper_TestInsertCell_int();
-
-int WebRtcDataLogCHelper_TestInsertArray_int();
-
-int WebRtcDataLogCHelper_TestInsertCell_float();
-
-int WebRtcDataLogCHelper_TestInsertArray_float();
-
-int WebRtcDataLogCHelper_TestInsertCell_double();
-
-int WebRtcDataLogCHelper_TestInsertArray_double();
-
-int WebRtcDataLogCHelper_TestInsertCell_int32();
-
-int WebRtcDataLogCHelper_TestInsertArray_int32();
-
-int WebRtcDataLogCHelper_TestInsertCell_uint32();
-
-int WebRtcDataLogCHelper_TestInsertArray_uint32();
-
-int WebRtcDataLogCHelper_TestInsertCell_int64();
-
-int WebRtcDataLogCHelper_TestInsertArray_int64();
-
-#ifdef __cplusplus
-} // end of extern "C"
-#endif
-
-#endif // SRC_SYSTEM_WRAPPERS_SOURCE_DATA_LOG_C_HELPERS_UNITTEST_H_
diff --git a/webrtc/system_wrappers/source/data_log_helpers_unittest.cc b/webrtc/system_wrappers/source/data_log_helpers_unittest.cc
deleted file mode 100644
index 1cf71875..0000000
--- a/webrtc/system_wrappers/source/data_log_helpers_unittest.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/system_wrappers/include/data_log.h"
-
-#include <string>
-
-#include "webrtc/test/gtest.h"
-
-using ::webrtc::DataLog;
-
-TEST(TestDataLog, IntContainers) {
- int c = 5;
- webrtc::ValueContainer<int> v1(c);
- c = 10;
- webrtc::ValueContainer<int> v2(c);
- std::string s1, s2;
- v1.ToString(&s1);
- v2.ToString(&s2);
- ASSERT_EQ(s1, "5,");
- ASSERT_EQ(s2, "10,");
- v1 = v2;
- v1.ToString(&s1);
- ASSERT_EQ(s1, s2);
-}
-
-TEST(TestDataLog, DoubleContainers) {
- double c = 3.5;
- webrtc::ValueContainer<double> v1(c);
- c = 10.3;
- webrtc::ValueContainer<double> v2(c);
- std::string s1, s2;
- v1.ToString(&s1);
- v2.ToString(&s2);
- ASSERT_EQ(s1, "3.5,");
- ASSERT_EQ(s2, "10.3,");
- v1 = v2;
- v1.ToString(&s1);
- ASSERT_EQ(s1, s2);
-}
-
-TEST(TestDataLog, MultiValueContainers) {
- int a[3] = {1, 2, 3};
- int b[3] = {4, 5, 6};
- webrtc::MultiValueContainer<int> m1(a, 3);
- webrtc::MultiValueContainer<int> m2(b, 3);
- webrtc::MultiValueContainer<int> m3(a, 3);
- std::string s1, s2, s3;
- m1.ToString(&s1);
- m2.ToString(&s2);
- ASSERT_EQ(s1, "1,2,3,");
- ASSERT_EQ(s2, "4,5,6,");
- m1 = m2;
- m1.ToString(&s1);
- ASSERT_EQ(s1, s2);
- m3.ToString(&s3);
- ASSERT_EQ(s3, "1,2,3,");
-}
diff --git a/webrtc/system_wrappers/source/data_log_no_op.cc b/webrtc/system_wrappers/source/data_log_no_op.cc
deleted file mode 100644
index bdd2b0a..0000000
--- a/webrtc/system_wrappers/source/data_log_no_op.cc
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/system_wrappers/include/data_log.h"
-
-#include <string>
-
-namespace webrtc {
-
-int DataLog::CreateLog() {
- return 0;
-}
-
-void DataLog::ReturnLog() {
-}
-
-std::string DataLog::Combine(const std::string& table_name, int table_id) {
- return std::string();
-}
-
-int DataLog::AddTable(const std::string& /*table_name*/) {
- return 0;
-}
-
-int DataLog::AddColumn(const std::string& /*table_name*/,
- const std::string& /*column_name*/,
- int /*multi_value_length*/) {
- return 0;
-}
-
-int DataLog::NextRow(const std::string& /*table_name*/) {
- return 0;
-}
-
-DataLogImpl::DataLogImpl() {
-}
-
-DataLogImpl::~DataLogImpl() {
-}
-
-DataLogImpl* DataLogImpl::StaticInstance() {
- return NULL;
-}
-
-void DataLogImpl::ReturnLog() {
-}
-
-int DataLogImpl::AddTable(const std::string& /*table_name*/) {
- return 0;
-}
-
-int DataLogImpl::AddColumn(const std::string& /*table_name*/,
- const std::string& /*column_name*/,
- int /*multi_value_length*/) {
- return 0;
-}
-
-int DataLogImpl::InsertCell(const std::string& /*table_name*/,
- const std::string& /*column_name*/,
- const Container* /*value_container*/) {
- return 0;
-}
-
-int DataLogImpl::NextRow(const std::string& /*table_name*/) {
- return 0;
-}
-
-void DataLogImpl::Flush() {
-}
-
-bool DataLogImpl::Run(void* /*obj*/) {
- return true;
-}
-
-void DataLogImpl::Process() {
-}
-
-void DataLogImpl::StopThread() {
-}
-
-} // namespace webrtc
diff --git a/webrtc/system_wrappers/source/data_log_unittest.cc b/webrtc/system_wrappers/source/data_log_unittest.cc
deleted file mode 100644
index da3cea3..0000000
--- a/webrtc/system_wrappers/source/data_log_unittest.cc
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/system_wrappers/include/data_log.h"
-
-#include <map>
-#include <string>
-
-#include "webrtc/system_wrappers/include/data_log_c.h"
-#include "webrtc/system_wrappers/source/data_log_c_helpers_unittest.h"
-#include "webrtc/test/gtest.h"
-
-using ::webrtc::DataLog;
-
-// A class for storing the values expected from a log table column when
-// verifying a log table file.
-struct ExpectedValues {
- public:
- ExpectedValues()
- : values(),
- multi_value_length(1) {
- }
-
- ExpectedValues(std::vector<std::string> expected_values,
- int expected_multi_value_length)
- : values(expected_values),
- multi_value_length(expected_multi_value_length) {
- }
-
- std::vector<std::string> values;
- int multi_value_length;
-};
-
-typedef std::map<std::string, ExpectedValues> ExpectedValuesMap;
-
-// A static class used for parsing and verifying data log files.
-class DataLogParser {
- public:
- // Verifies that the log table stored in the file "log_file" corresponds to
- // the cells and columns specified in "columns".
- static int VerifyTable(FILE* log_file, const ExpectedValuesMap& columns) {
- int row = 0;
- char line_buffer[kMaxLineLength];
- char* ret = fgets(line_buffer, kMaxLineLength, log_file);
- EXPECT_FALSE(ret == NULL);
- if (ret == NULL)
- return -1;
-
- std::string line(line_buffer, kMaxLineLength);
- VerifyHeader(line, columns);
- while (fgets(line_buffer, kMaxLineLength, log_file) != NULL) {
- line = std::string(line_buffer, kMaxLineLength);
- size_t line_position = 0;
-
- for (ExpectedValuesMap::const_iterator it = columns.begin();
- it != columns.end(); ++it) {
- std::string str = ParseElement(line, &line_position,
- it->second.multi_value_length);
- EXPECT_EQ(str, it->second.values[row]);
- if (str != it->second.values[row])
- return -1;
- }
- ++row;
- }
- return 0;
- }
-
- // Verifies the table header stored in "line" to correspond with the header
- // specified in "columns".
- static int VerifyHeader(const std::string& line,
- const ExpectedValuesMap& columns) {
- size_t line_position = 0;
- for (ExpectedValuesMap::const_iterator it = columns.begin();
- it != columns.end(); ++it) {
- std::string str = ParseElement(line, &line_position,
- it->second.multi_value_length);
- EXPECT_EQ(str, it->first);
- if (str != it->first)
- return -1;
- }
- return 0;
- }
-
- // Parses out and returns one element from the string "line", which contains
- // one line read from a log table file. An element can either be a column
- // header or a cell of a row.
- static std::string ParseElement(const std::string& line,
- size_t* line_position,
- int multi_value_length) {
- std::string parsed_cell;
- parsed_cell = "";
- for (int i = 0; i < multi_value_length; ++i) {
- size_t next_separator = line.find(',', *line_position);
- EXPECT_NE(next_separator, std::string::npos);
- if (next_separator == std::string::npos)
- break;
- parsed_cell += line.substr(*line_position,
- next_separator - *line_position + 1);
- *line_position = next_separator + 1;
- }
- return parsed_cell;
- }
-
- // This constant defines the maximum line length the DataLogParser can
- // parse.
- enum { kMaxLineLength = 100 };
-};
-
-TEST(TestDataLog, CreateReturnTest) {
- for (int i = 0; i < 10; ++i)
- ASSERT_EQ(DataLog::CreateLog(), 0);
- ASSERT_EQ(DataLog::AddTable(DataLog::Combine("a proper table", 1)), 0);
- for (int i = 0; i < 10; ++i)
- DataLog::ReturnLog();
- ASSERT_LT(DataLog::AddTable(DataLog::Combine("table failure", 1)), 0);
-}
-
-TEST(TestDataLog, VerifyCombineMethod) {
- EXPECT_EQ(std::string("a proper table_1"),
- DataLog::Combine("a proper table", 1));
-}
-
-TEST(TestDataLog, VerifySingleTable) {
- DataLog::CreateLog();
- DataLog::AddTable(DataLog::Combine("table", 1));
- DataLog::AddColumn(DataLog::Combine("table", 1), "arrival", 1);
- DataLog::AddColumn(DataLog::Combine("table", 1), "timestamp", 1);
- DataLog::AddColumn(DataLog::Combine("table", 1), "size", 5);
- uint32_t sizes[5] = {1400, 1500, 1600, 1700, 1800};
- for (int i = 0; i < 10; ++i) {
- DataLog::InsertCell(DataLog::Combine("table", 1), "arrival",
- static_cast<double>(i));
- DataLog::InsertCell(DataLog::Combine("table", 1), "timestamp",
- static_cast<int64_t>(4354 + i));
- DataLog::InsertCell(DataLog::Combine("table", 1), "size", sizes, 5);
- DataLog::NextRow(DataLog::Combine("table", 1));
- }
- DataLog::ReturnLog();
- // Verify file
- FILE* table = fopen("table_1.txt", "r");
- ASSERT_FALSE(table == NULL);
- // Read the column names and verify with the expected columns.
- // Note that the columns are written to file in alphabetical order.
- // Data expected from parsing the file
- const int kNumberOfRows = 10;
- std::string string_arrival[kNumberOfRows] = {
- "0,", "1,", "2,", "3,", "4,",
- "5,", "6,", "7,", "8,", "9,"
- };
- std::string string_timestamp[kNumberOfRows] = {
- "4354,", "4355,", "4356,", "4357,",
- "4358,", "4359,", "4360,", "4361,",
- "4362,", "4363,"
- };
- std::string string_sizes = "1400,1500,1600,1700,1800,";
- ExpectedValuesMap expected;
- expected["arrival,"] = ExpectedValues(
- std::vector<std::string>(string_arrival,
- string_arrival +
- kNumberOfRows),
- 1);
- expected["size[5],,,,,"] = ExpectedValues(
- std::vector<std::string>(10, string_sizes), 5);
- expected["timestamp,"] = ExpectedValues(
- std::vector<std::string>(string_timestamp,
- string_timestamp +
- kNumberOfRows),
- 1);
- ASSERT_EQ(DataLogParser::VerifyTable(table, expected), 0);
- fclose(table);
-}
-
-TEST(TestDataLog, VerifyMultipleTables) {
- DataLog::CreateLog();
- DataLog::AddTable(DataLog::Combine("table", 2));
- DataLog::AddTable(DataLog::Combine("table", 3));
- DataLog::AddColumn(DataLog::Combine("table", 2), "arrival", 1);
- DataLog::AddColumn(DataLog::Combine("table", 2), "timestamp", 1);
- DataLog::AddColumn(DataLog::Combine("table", 2), "size", 1);
- DataLog::AddTable(DataLog::Combine("table", 4));
- DataLog::AddColumn(DataLog::Combine("table", 3), "timestamp", 1);
- DataLog::AddColumn(DataLog::Combine("table", 3), "arrival", 1);
- DataLog::AddColumn(DataLog::Combine("table", 4), "size", 1);
- for (int32_t i = 0; i < 10; ++i) {
- DataLog::InsertCell(DataLog::Combine("table", 2), "arrival",
- static_cast<int32_t>(i));
- DataLog::InsertCell(DataLog::Combine("table", 2), "timestamp",
- static_cast<int32_t>(4354 + i));
- DataLog::InsertCell(DataLog::Combine("table", 2), "size",
- static_cast<int32_t>(1200 + 10 * i));
- DataLog::InsertCell(DataLog::Combine("table", 3), "timestamp",
- static_cast<int32_t>(4354 + i));
- DataLog::InsertCell(DataLog::Combine("table", 3), "arrival",
- static_cast<int32_t>(i));
- DataLog::InsertCell(DataLog::Combine("table", 4), "size",
- static_cast<int32_t>(1200 + 10 * i));
- DataLog::NextRow(DataLog::Combine("table", 4));
- DataLog::NextRow(DataLog::Combine("table", 2));
- DataLog::NextRow(DataLog::Combine("table", 3));
- }
- DataLog::ReturnLog();
-
- // Data expected from parsing the file
- const int kNumberOfRows = 10;
- std::string string_arrival[kNumberOfRows] = {
- "0,", "1,", "2,", "3,", "4,",
- "5,", "6,", "7,", "8,", "9,"
- };
- std::string string_timestamp[kNumberOfRows] = {
- "4354,", "4355,", "4356,", "4357,",
- "4358,", "4359,", "4360,", "4361,",
- "4362,", "4363,"
- };
- std::string string_size[kNumberOfRows] = {
- "1200,", "1210,", "1220,", "1230,",
- "1240,", "1250,", "1260,", "1270,",
- "1280,", "1290,"
- };
-
- // Verify table 2
- {
- FILE* table = fopen("table_2.txt", "r");
- ASSERT_FALSE(table == NULL);
- ExpectedValuesMap expected;
- expected["arrival,"] = ExpectedValues(
- std::vector<std::string>(string_arrival,
- string_arrival +
- kNumberOfRows),
- 1);
- expected["size,"] = ExpectedValues(
- std::vector<std::string>(string_size,
- string_size + kNumberOfRows),
- 1);
- expected["timestamp,"] = ExpectedValues(
- std::vector<std::string>(string_timestamp,
- string_timestamp +
- kNumberOfRows),
- 1);
- ASSERT_EQ(DataLogParser::VerifyTable(table, expected), 0);
- fclose(table);
- }
-
- // Verify table 3
- {
- FILE* table = fopen("table_3.txt", "r");
- ASSERT_FALSE(table == NULL);
- ExpectedValuesMap expected;
- expected["arrival,"] = ExpectedValues(
- std::vector<std::string>(string_arrival,
- string_arrival +
- kNumberOfRows),
- 1);
- expected["timestamp,"] = ExpectedValues(
- std::vector<std::string>(string_timestamp,
- string_timestamp +
- kNumberOfRows),
- 1);
- ASSERT_EQ(DataLogParser::VerifyTable(table, expected), 0);
- fclose(table);
- }
-
- // Verify table 4
- {
- FILE* table = fopen("table_4.txt", "r");
- ASSERT_FALSE(table == NULL);
- ExpectedValuesMap expected;
- expected["size,"] = ExpectedValues(
- std::vector<std::string>(string_size,
- string_size +
- kNumberOfRows),
- 1);
- ASSERT_EQ(DataLogParser::VerifyTable(table, expected), 0);
- fclose(table);
- }
-}
-
-TEST(TestDataLogCWrapper, VerifyCWrapper) {
- // Simply call all C wrapper log functions through the C helper unittests.
- // Main purpose is to make sure that the linkage is correct.
-
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestCreateLog());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestCombine());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestAddTable());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestAddColumn());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestInsertCell_int());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestInsertArray_int());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestNextRow());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestInsertCell_float());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestInsertArray_float());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestNextRow());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestInsertCell_double());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestInsertArray_double());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestNextRow());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestInsertCell_int32());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestInsertArray_int32());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestNextRow());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestInsertCell_uint32());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestInsertArray_uint32());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestNextRow());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestInsertCell_int64());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestInsertArray_int64());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestNextRow());
- EXPECT_EQ(0, WebRtcDataLogCHelper_TestReturnLog());
-}
diff --git a/webrtc/system_wrappers/source/data_log_unittest_disabled.cc b/webrtc/system_wrappers/source/data_log_unittest_disabled.cc
deleted file mode 100644
index c06648e..0000000
--- a/webrtc/system_wrappers/source/data_log_unittest_disabled.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/system_wrappers/include/data_log.h"
-
-#include <stdio.h>
-
-#include "webrtc/test/gtest.h"
-
-using ::webrtc::DataLog;
-
-const char* kDataLogFileName = "table_1.txt";
-
-void PerformLogging(const std::string& table_name) {
- // Simulate normal DataTable logging behavior using this table name.
- ASSERT_EQ(0, DataLog::AddTable(table_name));
- ASSERT_EQ(0, DataLog::AddColumn(table_name, "test", 1));
- for (int i = 0; i < 10; ++i) {
- // TODO(kjellander): Check InsertCell result when the DataLog dummy is
- // fixed.
- DataLog::InsertCell(table_name, "test", static_cast<double>(i));
- ASSERT_EQ(0, DataLog::NextRow(table_name));
- }
-}
-
-// Simple test to verify DataLog is still working when the GYP variable
-// enable_data_logging==0 (the default case).
-TEST(TestDataLogDisabled, VerifyLoggingWorks) {
- ASSERT_EQ(0, DataLog::CreateLog());
- // Generate a table_name name and assure it's an empty string
- // (dummy behavior).
- std::string table_name = DataLog::Combine("table", 1);
- ASSERT_EQ("", table_name);
- PerformLogging(table_name);
- DataLog::ReturnLog();
-}
-
-TEST(TestDataLogDisabled, EnsureNoFileIsWritten) {
- // Remove any previous data files on disk:
- remove(kDataLogFileName);
- ASSERT_EQ(0, DataLog::CreateLog());
- // Don't use the table name we would get from Combine on a disabled DataLog.
- // Use "table_1" instead (which is what an enabled DataLog would give us).
- PerformLogging("table_1");
- DataLog::ReturnLog();
- // Verify no data log file have been written:
- ASSERT_EQ(NULL, fopen(kDataLogFileName, "r"));
-}
diff --git a/webrtc/system_wrappers/system_wrappers.gyp b/webrtc/system_wrappers/system_wrappers.gyp
index ea8fdb6..abee345 100644
--- a/webrtc/system_wrappers/system_wrappers.gyp
+++ b/webrtc/system_wrappers/system_wrappers.gyp
@@ -24,9 +24,6 @@
'include/cpu_features_wrapper.h',
'include/cpu_info.h',
'include/critical_section_wrapper.h',
- 'include/data_log.h',
- 'include/data_log_c.h',
- 'include/data_log_impl.h',
'include/event_wrapper.h',
'include/field_trial.h',
'include/file_wrapper.h',
@@ -51,7 +48,6 @@
'source/condition_variable_event_win.h',
'source/cpu_features.cc',
'source/cpu_info.cc',
- 'source/data_log_c.cc',
'source/event.cc',
'source/event_timer_posix.cc',
'source/event_timer_posix.h',
@@ -78,11 +74,6 @@
'source/trace_win.h',
],
'conditions': [
- ['enable_data_logging==1', {
- 'sources': [ 'source/data_log.cc', ],
- }, {
- 'sources': [ 'source/data_log_no_op.cc', ],
- },],
['OS=="android"', {
'defines': [
'WEBRTC_THREAD_RR',