Merge "adb: add sysdeps/chrono.h for chrono literals on Win32."

This commit is contained in:
Treehugger Robot 2016-11-16 22:21:40 +00:00 committed by Gerrit Code Review
commit e631e470e0
8 changed files with 68 additions and 22 deletions

View file

@ -28,7 +28,6 @@
#include <sys/stat.h>
#include <sys/types.h>
#include <chrono>
#include <string>
#include <thread>
#include <vector>
@ -40,6 +39,7 @@
#include "adb_io.h"
#include "adb_utils.h"
#include "socket_spec.h"
#include "sysdeps/chrono.h"
static TransportType __adb_transport = kTransportAny;
static const char* __adb_serial = NULL;
@ -191,7 +191,7 @@ int adb_connect(const std::string& service, std::string* error) {
fprintf(stdout,"* daemon started successfully *\n");
}
// Give the server some time to start properly and detect devices.
std::this_thread::sleep_for(std::chrono::seconds(3));
std::this_thread::sleep_for(3s);
// fall through to _adb_connect
} else {
// If a server is already running, check its version matches.
@ -236,7 +236,7 @@ int adb_connect(const std::string& service, std::string* error) {
}
/* XXX can we better detect its death? */
std::this_thread::sleep_for(std::chrono::seconds(2));
std::this_thread::sleep_for(2s);
goto start_server;
}
}

View file

@ -20,7 +20,6 @@
#include <unistd.h>
#include <chrono>
#include <thread>
#include <android-base/stringprintf.h>

View file

@ -31,7 +31,6 @@
#include <sys/stat.h>
#include <sys/types.h>
#include <chrono>
#include <memory>
#include <string>
#include <thread>
@ -61,6 +60,7 @@
#include "file_sync_service.h"
#include "services.h"
#include "shell_service.h"
#include "sysdeps/chrono.h"
static int install_app(TransportType t, const char* serial, int argc, const char** argv);
static int install_multiple_app(TransportType t, const char* serial, int argc, const char** argv);
@ -1082,7 +1082,7 @@ static bool adb_root(const char* command) {
// Give adbd some time to kill itself and come back up.
// We can't use wait-for-device because devices (e.g. adb over network) might not come back.
std::this_thread::sleep_for(std::chrono::seconds(3));
std::this_thread::sleep_for(3s);
return true;
}

View file

@ -19,7 +19,6 @@
#include <gtest/gtest.h>
#include <array>
#include <chrono>
#include <limits>
#include <queue>
#include <string>
@ -33,6 +32,7 @@
#include "fdevent_test.h"
#include "socket.h"
#include "sysdeps.h"
#include "sysdeps/chrono.h"
struct ThreadArg {
int first_read_fd;
@ -46,7 +46,7 @@ static void FdEventThreadFunc(void*) {
fdevent_loop();
}
constexpr auto SLEEP_FOR_FDEVENT = std::chrono::milliseconds(100);
constexpr auto SLEEP_FOR_FDEVENT = 100ms;
TEST_F(LocalSocketTest, smoke) {
// Join two socketpairs with a chain of intermediate socketpairs.
@ -231,7 +231,7 @@ static void ClientThreadFunc() {
std::string error;
int fd = network_loopback_client(5038, SOCK_STREAM, &error);
ASSERT_GE(fd, 0) << error;
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::this_thread::sleep_for(200ms);
ASSERT_EQ(0, adb_close(fd));
}

46
adb/sysdeps/chrono.h Normal file
View file

@ -0,0 +1,46 @@
/*
* Copyright (C) 2016 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.
*/
#pragma once
#include <chrono>
#if defined(_WIN32)
// We don't have C++14 on Windows yet.
// Reimplement std::chrono_literals ourselves until we do.
// Silence the following warning (which gets promoted to an error):
// error: literal operator suffixes not preceded by _ are reserved for future standardization
#pragma GCC system_header
constexpr std::chrono::seconds operator"" s(unsigned long long s) {
return std::chrono::seconds(s);
}
constexpr std::chrono::duration<long double> operator"" s(long double s) {
return std::chrono::duration<long double>(s);
}
constexpr std::chrono::milliseconds operator"" ms(unsigned long long ms) {
return std::chrono::milliseconds(ms);
}
constexpr std::chrono::duration<long double, std::milli> operator"" ms(long double ms) {
return std::chrono::duration<long double, std::milli>(ms);
}
#else
using namespace std::chrono_literals;
#endif

View file

@ -18,15 +18,15 @@
#include <unistd.h>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <thread>
#include "adb_io.h"
#include "sysdeps.h"
#include "sysdeps/chrono.h"
static void increment_atomic_int(void* c) {
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(1s);
reinterpret_cast<std::atomic<int>*>(c)->fetch_add(1);
}
@ -37,7 +37,7 @@ TEST(sysdeps_thread, smoke) {
ASSERT_TRUE(adb_thread_create(increment_atomic_int, &counter));
}
std::this_thread::sleep_for(std::chrono::seconds(2));
std::this_thread::sleep_for(2s);
ASSERT_EQ(100, counter.load());
}
@ -258,15 +258,15 @@ TEST(sysdeps_mutex, mutex_smoke) {
ASSERT_FALSE(m.try_lock());
m.lock();
finished.store(true);
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::this_thread::sleep_for(200ms);
m.unlock();
}, nullptr);
ASSERT_FALSE(finished.load());
std::this_thread::sleep_for(std::chrono::milliseconds(100));
std::this_thread::sleep_for(100ms);
ASSERT_FALSE(finished.load());
m.unlock();
std::this_thread::sleep_for(std::chrono::milliseconds(100));
std::this_thread::sleep_for(100ms);
m.lock();
ASSERT_TRUE(finished.load());
m.unlock();
@ -282,13 +282,13 @@ TEST(sysdeps_mutex, recursive_mutex_smoke) {
adb_thread_create([](void*) {
ASSERT_FALSE(m.try_lock());
m.lock();
std::this_thread::sleep_for(std::chrono::milliseconds(500));
std::this_thread::sleep_for(500ms);
m.unlock();
}, nullptr);
std::this_thread::sleep_for(std::chrono::milliseconds(100));
std::this_thread::sleep_for(100ms);
m.unlock();
std::this_thread::sleep_for(std::chrono::milliseconds(100));
std::this_thread::sleep_for(100ms);
ASSERT_FALSE(m.try_lock());
m.lock();
m.unlock();

View file

@ -25,7 +25,6 @@
#include <string.h>
#include <sys/types.h>
#include <chrono>
#include <condition_variable>
#include <mutex>
#include <thread>
@ -41,6 +40,7 @@
#include "adb.h"
#include "adb_io.h"
#include "adb_utils.h"
#include "sysdeps/chrono.h"
#if ADB_HOST
@ -146,7 +146,7 @@ static void PollAllLocalPortsForEmulator() {
// Retry the disconnected local port for 60 times, and sleep 1 second between two retries.
constexpr uint32_t LOCAL_PORT_RETRY_COUNT = 60;
constexpr auto LOCAL_PORT_RETRY_INTERVAL = std::chrono::seconds(1);
constexpr auto LOCAL_PORT_RETRY_INTERVAL = 1s;
struct RetryPort {
int port;
@ -216,7 +216,7 @@ static void server_socket_thread(void* arg) {
serverfd = network_inaddr_any_server(port, SOCK_STREAM, &error);
if(serverfd < 0) {
D("server: cannot bind socket yet: %s", error.c_str());
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(1s);
continue;
}
close_on_exec(serverfd);

View file

@ -35,6 +35,7 @@
#include <android-base/errors.h>
#include "adb.h"
#include "sysdeps/chrono.h"
#include "transport.h"
/** Structure usb_handle describes our connection to the usb device via
@ -179,7 +180,7 @@ void device_poll_thread(void*) {
while (true) {
find_devices();
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(1s);
}
}