1d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath/* 2d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath * Copyright (C) 2014 The Android Open Source Project 3d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath * 4d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath * Licensed under the Apache License, Version 2.0 (the "License"); 5d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath * you may not use this file except in compliance with the License. 6d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath * You may obtain a copy of the License at 7d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath * 8d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 9d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath * 10d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath * Unless required by applicable law or agreed to in writing, software 11d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 12d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath * See the License for the specific language governing permissions and 14d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath * limitations under the License. 15d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath */ 16d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath 17d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath#include "scoped_flock.h" 18d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath 19e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogers#include "common_runtime_test.h" 20d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath 21d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamathnamespace art { 22d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath 23d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamathclass ScopedFlockTest : public CommonRuntimeTest {}; 24d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath 25d1c606f280797be81e2592c483869a6ec836a9f3Narayan KamathTEST_F(ScopedFlockTest, TestLocking) { 26d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath ScratchFile scratch_file; 27d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath std::string error_msg; 28d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath 29d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath // NOTE: Locks applied using flock(2) and fcntl(2) are oblivious 30d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath // to each other, so attempting to query locks set by flock using 31d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath // using fcntl(,F_GETLK,) will not work. see kernel doc at 32d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath // Documentation/filesystems/locks.txt. 33d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath ScopedFlock file_lock; 34d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath ASSERT_TRUE(file_lock.Init(scratch_file.GetFilename().c_str(), 35d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath &error_msg)); 36d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath 37d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath ASSERT_FALSE(file_lock.Init("/guaranteed/not/to/exist", &error_msg)); 38d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath} 39d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath 40d1c606f280797be81e2592c483869a6ec836a9f3Narayan Kamath} // namespace art 41