001package org.eclipse.aether.internal.impl; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022import static org.eclipse.aether.repository.RepositoryPolicy.*; 023import static org.junit.Assert.*; 024 025import java.util.Calendar; 026 027import org.eclipse.aether.DefaultRepositorySystemSession; 028import org.eclipse.aether.internal.test.util.TestUtils; 029import org.eclipse.aether.repository.RepositoryPolicy; 030import org.junit.Before; 031import org.junit.Test; 032 033/** 034 */ 035public class DefaultUpdatePolicyAnalyzerTest 036{ 037 038 private DefaultUpdatePolicyAnalyzer analyzer; 039 040 private DefaultRepositorySystemSession session; 041 042 @Before 043 public void setup() 044 { 045 analyzer = new DefaultUpdatePolicyAnalyzer(); 046 session = TestUtils.newSession(); 047 } 048 049 private long now() 050 { 051 return System.currentTimeMillis(); 052 } 053 054 @Test 055 public void testIsUpdateRequired_PolicyNever() 056 { 057 String policy = RepositoryPolicy.UPDATE_POLICY_NEVER; 058 assertEquals( false, analyzer.isUpdatedRequired( session, Long.MIN_VALUE, policy ) ); 059 assertEquals( false, analyzer.isUpdatedRequired( session, Long.MAX_VALUE, policy ) ); 060 assertEquals( false, analyzer.isUpdatedRequired( session, 0, policy ) ); 061 assertEquals( false, analyzer.isUpdatedRequired( session, 1, policy ) ); 062 assertEquals( false, analyzer.isUpdatedRequired( session, now() - 604800000, policy ) ); 063 } 064 065 @Test 066 public void testIsUpdateRequired_PolicyAlways() 067 { 068 String policy = RepositoryPolicy.UPDATE_POLICY_ALWAYS; 069 assertEquals( true, analyzer.isUpdatedRequired( session, Long.MIN_VALUE, policy ) ); 070 assertEquals( true, analyzer.isUpdatedRequired( session, Long.MAX_VALUE, policy ) ); 071 assertEquals( true, analyzer.isUpdatedRequired( session, 0, policy ) ); 072 assertEquals( true, analyzer.isUpdatedRequired( session, 1, policy ) ); 073 assertEquals( true, analyzer.isUpdatedRequired( session, now() - 1000, policy ) ); 074 } 075 076 @Test 077 public void testIsUpdateRequired_PolicyDaily() 078 { 079 Calendar cal = Calendar.getInstance(); 080 cal.set( Calendar.HOUR_OF_DAY, 0 ); 081 cal.set( Calendar.MINUTE, 0 ); 082 cal.set( Calendar.SECOND, 0 ); 083 cal.set( Calendar.MILLISECOND, 0 ); 084 long localMidnight = cal.getTimeInMillis(); 085 086 String policy = RepositoryPolicy.UPDATE_POLICY_DAILY; 087 assertEquals( true, analyzer.isUpdatedRequired( session, Long.MIN_VALUE, policy ) ); 088 assertEquals( false, analyzer.isUpdatedRequired( session, Long.MAX_VALUE, policy ) ); 089 assertEquals( false, analyzer.isUpdatedRequired( session, localMidnight, policy ) ); 090 assertEquals( false, analyzer.isUpdatedRequired( session, localMidnight + 1, policy ) ); 091 assertEquals( true, analyzer.isUpdatedRequired( session, localMidnight - 1, policy ) ); 092 } 093 094 @Test 095 public void testIsUpdateRequired_PolicyInterval() 096 { 097 String policy = RepositoryPolicy.UPDATE_POLICY_INTERVAL + ":5"; 098 assertEquals( true, analyzer.isUpdatedRequired( session, Long.MIN_VALUE, policy ) ); 099 assertEquals( false, analyzer.isUpdatedRequired( session, Long.MAX_VALUE, policy ) ); 100 assertEquals( false, analyzer.isUpdatedRequired( session, now(), policy ) ); 101 assertEquals( false, analyzer.isUpdatedRequired( session, now() - 5 - 1, policy ) ); 102 assertEquals( false, analyzer.isUpdatedRequired( session, now() - 1000 * 5 - 1, policy ) ); 103 assertEquals( true, analyzer.isUpdatedRequired( session, now() - 1000 * 60 * 5 - 1, policy ) ); 104 105 policy = RepositoryPolicy.UPDATE_POLICY_INTERVAL + ":invalid"; 106 assertEquals( false, analyzer.isUpdatedRequired( session, now(), policy ) ); 107 } 108 109 @Test 110 public void testEffectivePolicy() 111 { 112 assertEquals( UPDATE_POLICY_ALWAYS, 113 analyzer.getEffectiveUpdatePolicy( session, UPDATE_POLICY_ALWAYS, UPDATE_POLICY_DAILY ) ); 114 assertEquals( UPDATE_POLICY_ALWAYS, 115 analyzer.getEffectiveUpdatePolicy( session, UPDATE_POLICY_ALWAYS, UPDATE_POLICY_NEVER ) ); 116 assertEquals( UPDATE_POLICY_DAILY, 117 analyzer.getEffectiveUpdatePolicy( session, UPDATE_POLICY_DAILY, UPDATE_POLICY_NEVER ) ); 118 assertEquals( UPDATE_POLICY_INTERVAL + ":60", 119 analyzer.getEffectiveUpdatePolicy( session, UPDATE_POLICY_DAILY, UPDATE_POLICY_INTERVAL + ":60" ) ); 120 assertEquals( UPDATE_POLICY_INTERVAL + ":60", 121 analyzer.getEffectiveUpdatePolicy( session, UPDATE_POLICY_INTERVAL + ":100", 122 UPDATE_POLICY_INTERVAL + ":60" ) ); 123 } 124 125}