1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/stringize_macros.h"
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "remoting/host/server_log_entry_host.h"
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "remoting/signaling/server_log_entry.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "remoting/signaling/server_log_entry_unittest.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/webrtc/libjingle/xmllite/xmlelement.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using buzz::XmlAttr;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using buzz::XmlElement;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace remoting {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST(ServerLogEntryHostTest, MakeForSessionStateChange) {
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  scoped_ptr<ServerLogEntry> entry(MakeLogEntryForSessionStateChange(true));
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<XmlElement> stanza = entry->ToStanza();
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string error;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::map<std::string, std::string> key_value_pairs;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["role"] = "host";
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["event-name"] = "session-state";
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["session-state"] = "connected";
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::set<std::string> keys;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(VerifyStanza(key_value_pairs, keys, stanza.get(), &error))
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      << error;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST(ServerLogEntryHostTest, MakeForHeartbeat) {
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  scoped_ptr<ServerLogEntry> entry(MakeLogEntryForHeartbeat());
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<XmlElement> stanza = entry->ToStanza();
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string error;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::map<std::string, std::string> key_value_pairs;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["role"] = "host";
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["event-name"] = "heartbeat";
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::set<std::string> keys;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(VerifyStanza(key_value_pairs, keys, stanza.get(), &error))
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      << error;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST(ServerLogEntryHostTest, AddHostFields) {
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  scoped_ptr<ServerLogEntry> entry(MakeLogEntryForSessionStateChange(true));
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  AddHostFieldsToLogEntry(entry.get());
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<XmlElement> stanza = entry->ToStanza();
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string error;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::map<std::string, std::string> key_value_pairs;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["role"] = "host";
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["event-name"] = "session-state";
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["session-state"] = "connected";
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::set<std::string> keys;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  keys.insert("cpu");
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["os-name"] = "Windows";
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  keys.insert("os-version");
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_MACOSX)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["os-name"] = "Mac";
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  keys.insert("os-version");
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_CHROMEOS)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["os-name"] = "ChromeOS";
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  keys.insert("os-version");
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_LINUX)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["os-name"] = "Linux";
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["host-version"] = STRINGIZE(VERSION);
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(VerifyStanza(key_value_pairs, keys, stanza.get(), &error)) <<
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      error;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST(ServerLogEntryHostTest, AddModeField1) {
72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  scoped_ptr<ServerLogEntry> entry(MakeLogEntryForSessionStateChange(true));
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  entry->AddModeField(ServerLogEntry::IT2ME);
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<XmlElement> stanza = entry->ToStanza();
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string error;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::map<std::string, std::string> key_value_pairs;
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["role"] = "host";
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["event-name"] = "session-state";
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["session-state"] = "connected";
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["mode"] = "it2me";
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::set<std::string> keys;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(VerifyStanza(key_value_pairs, keys, stanza.get(), &error)) <<
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      error;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
86cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST(ServerLogEntryHostTest, AddModeField2) {
87cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  scoped_ptr<ServerLogEntry> entry(MakeLogEntryForSessionStateChange(true));
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  entry->AddModeField(ServerLogEntry::ME2ME);
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<XmlElement> stanza = entry->ToStanza();
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string error;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::map<std::string, std::string> key_value_pairs;
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["role"] = "host";
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["event-name"] = "session-state";
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["session-state"] = "connected";
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  key_value_pairs["mode"] = "me2me";
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::set<std::string> keys;
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(VerifyStanza(key_value_pairs, keys, stanza.get(), &error)) <<
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      error;
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace remoting
102