Mercurial > hg > mercurial
view mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MirrorManagerTest.java @ 976:7bf4d943d5bb
Update copyright
author | pavel.sher |
---|---|
date | Mon, 22 Jan 2018 11:39:20 +0100 |
parents | 31a1aca3305c |
children | 10dc26b32c35 |
line wrap: on
line source
/* * Copyright 2000-2018 JetBrains s.r.o. * * 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. */ package jetbrains.buildServer.buildTriggers.vcs.mercurial; import jetbrains.buildServer.util.Hash; import org.jetbrains.annotations.NotNull; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.io.File; import java.io.IOException; import java.util.List; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertTrue; /** * @author dmitry.neverov */ @Test public class MirrorManagerTest extends BaseMercurialTestCase { private File myRootDir; private MirrorManagerImpl myManager; @BeforeMethod public void setUp() throws Exception { super.setUp(); myRootDir = myTempFiles.createTempDir(); myManager = new MirrorManagerImpl(new PluginConfig() { @NotNull public File getCachesDir() { return myRootDir; } }); } public void manager_should_create_an_empty_map_file() { assertTrue(myRootDir.listFiles().length == 1); } public void getMirrorDir_returns_dir_under_root() { File mirrorDir = myManager.getMirrorDir("hg://some.com/repository.hg"); assertEquals(myRootDir, mirrorDir.getParentFile()); assertTrue(mirrorDir.exists()); } public void getMirrorDir_returns_same_result_for_same_url() { String url = "hg://some.com/repository.hg"; assertEquals(myManager.getMirrorDir(url), myManager.getMirrorDir(url)); } public void getMirrors_remember_created_repositories() { File mirrorDir1 = myManager.getMirrorDir("hg://some.com/repository.hg"); File mirrorDir2 = myManager.getMirrorDir("hg://other.com/repository.hg"); List<File> mirrors = myManager.getMirrors(); assertEquals(2, mirrors.size()); assertTrue(mirrors.contains(mirrorDir1)); assertTrue(mirrors.contains(mirrorDir2)); } public void should_handle_url_collisions() throws IOException { final String url1 = "hg://some.com/repository.hg"; final String url2 = "hg://other.com/repository.hg"; MirrorManagerImpl.HashCalculator hashWithCollision = new MirrorManagerImpl.HashCalculator() { public long calc(String value) { if (value.equals(url1) || value.equals(url2)) { return 0;//emulate collision } else { return Hash.calc(value); } } }; //alone they get dir with the same name: final File dir1 = myTempFiles.createTempDir(); MirrorManagerImpl mm1 = new MirrorManagerImpl(new PluginConfig() { @NotNull public File getCachesDir() { return dir1; } }); mm1.setHashCalculator(hashWithCollision); File separateMirrorDir1 = mm1.getMirrorDir(url1); final File dir2 = myTempFiles.createTempDir(); MirrorManagerImpl mm2 = new MirrorManagerImpl(new PluginConfig() { @NotNull public File getCachesDir() { return dir2; } }); mm2.setHashCalculator(hashWithCollision); File separateMirrorDir2 = mm2.getMirrorDir(url2); assertEquals(separateMirrorDir1.getName(), separateMirrorDir2.getName()); myManager.setHashCalculator(hashWithCollision); File mirrorDir1 = myManager.getMirrorDir(url1); File mirrorDir2 = myManager.getMirrorDir(url2); assertFalse(mirrorDir1.equals(mirrorDir2)); } public void should_survive_restart() throws IOException { String url1 = "hg://some.com/repository.hg"; String url2 = "hg://other.com/repository.hg?param = 1"; File mirrorDir1 = myManager.getMirrorDir(url1); File mirrorDir2 = myManager.getMirrorDir(url2); //emulate restart by creating a new manager for the same rootDir MirrorManagerImpl manager = new MirrorManagerImpl(new PluginConfig() { @NotNull public File getCachesDir() { return myRootDir; } }); assertEquals(2, manager.getMirrors().size()); assertTrue(manager.getMirrors().contains(mirrorDir1)); assertTrue(manager.getMirrors().contains(mirrorDir2)); } public void should_be_able_to_forget_directory() throws Exception { String url = "hg://some.org/repository"; File mirror1 = myManager.getMirrorDir(url); File dotHg = new File(mirror1, ".hg"); dotHg.mkdirs(); myManager.forgetDir(mirror1); File mirror2 = myManager.getMirrorDir(url); assertFalse(mirror2.equals(mirror1)); } }