/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.apache.solr.handler; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.client.solrj.impl.HttpSolrClient; public class CheckBackupStatus extends SolrTestCaseJ4 { String response = null; public boolean success = false; String backupTimestamp = null; final String lastBackupTimestamp; final Pattern p = Pattern.compile("<str name=\"snapshotCompletedAt\">(.*?)</str>"); final Pattern pException = Pattern.compile("<str name=\"snapShootException\">(.*?)</str>"); final HttpSolrClient client; final String coreName; public CheckBackupStatus(final HttpSolrClient client, String coreName, String lastBackupTimestamp) { this.client = client; this.lastBackupTimestamp = lastBackupTimestamp; this.coreName = coreName; } public CheckBackupStatus(final HttpSolrClient client, String coreName) { this(client, coreName, null); } public void fetchStatus() throws IOException { String masterUrl = client.getBaseURL() + "/" + coreName + ReplicationHandler.PATH + "?command=" + ReplicationHandler.CMD_DETAILS; response = client.getHttpClient().execute(new HttpGet(masterUrl), new BasicResponseHandler()); if(pException.matcher(response).find()) { fail("Failed to create backup"); } if(response.contains("<str name=\"status\">success</str>")) { Matcher m = p.matcher(response); if(!m.find()) { fail("could not find the completed timestamp in response."); } if (lastBackupTimestamp != null) { backupTimestamp = m.group(1); if (backupTimestamp.equals(lastBackupTimestamp)) { success = true; } } else { success = true; } } } }