//package com.linkedin.camus.etl.kafka.test; // //import java.io.IOException; //import java.net.URI; //import java.net.URISyntaxException; //import java.util.HashMap; //import java.util.List; //import java.util.Map; //import java.util.Properties; // //import kafka.api.OffsetRequest; //import kafka.javaapi.consumer.SimpleConsumer; //import kafka.producer.SyncProducerConfig; // //import org.codehaus.jackson.map.ObjectMapper; //import org.joda.time.DateTime; // //import com.linkedin.camus.etl.kafka.common.DateUtils; //import com.linkedin.camus.etl.kafka.common.EtlRequest; //import com.linkedin.camus.etl.kafka.common.EtlZkClient; // ///** // * Test the kafka zookeeper client // * // * @author // * // */ //@SuppressWarnings("unused") //public class TestKafkaZkClient //{ // private static final long DEFAULT_OFFSET = -1; // private static final String TOPIC_KEY = "topic"; // private static final String NODE_KEY = "node"; // private static final String URI_KEY = "uri"; // private static final String PARTITION_KEY = "partition"; // private static final String OFFSET_KEY = "offset"; // private static final String PREVIOUS_OFFSET_KEY = "previous"; // // private final String topic = "test"; // private final String nodeId = "node"; // private final int partition = 1; // // private URI uri; // private final long offset = DEFAULT_OFFSET; // private final long previousOffset = DEFAULT_OFFSET; // // private static void printPartition(String date) // { // // DateTime time = DateUtils.MINUTE_FORMATTER.parseDateTime(date); // long partition = DateUtils.getPartition(3600000, time.getMillis()); // // System.out.println(partition + " " + DateUtils.MINUTE_FORMATTER.print(partition) // + " " + time.getMillis() + " " // + DateUtils.MINUTE_FORMATTER.print(time.getMillis()) + " dsd " + partition // / 3600000); // } // // private static void testSchema() // { // String schemaStr = // "{'type':'record', 'name':'test 'fields':[{'name':'col1', 'type':'int'},{'name':'col2', 'type':'boolean', 'default':false}]}"; // } // // public static void main(String[] args) // { // String unsanitizedSchema = // "{'type':'record','name':'NetworkUpdateEvent','namespace':'com.linkedin.events.nus','fields':[{'name':'header','type':{'type':'record','name':'EventHeader','namespace':'com.linkedin.events','fields':[{'name':'memberId','type':'int','doc':'The member id of the user initiating the action'},{'name':'time','type':'long','doc':'The time of the event'},{'name':'server','type':'string','doc':'The name of the server'},{'name':'service','type':'string','doc':'The name of the service'},{'name':'guid','type':{'type':'fixed','name':'Guid','namespace':'com.linkedin.events','size':16},'doc':'A unique identifier for the message'}]}},{'name':'source','type':{'type':'record','name':'EntityID','namespace':'com.linkedin.events','fields':[{'name':'type','type':{'type':'enum','name':'EntityType','namespace':'com.linkedin.events','symbols':['ANET','ARTC','CMPY','EVNT','JOB','MBR','QSTN','SHAR','LART','CMTS','CMTA','NUDG','PDCT','REVW','PMOD','INDY','CSRC','STTL','ANSW','APP','AD']}},{'name':'id','type':'string'}]}},{'name':'updateId','type':'string','default':''},{'name':'updateType','type':'string','default':''},{'name':'updateSubtype','type':'string','default':''},{'name':'visibility','type':'string','default':''},{'name':'primaryUrl','type':'string','default':''},{'name':'destinations','type':{'type':'array','items':'com.linkedin.events.EntityID'}},{'name':'targets','type':{'type':'array','items':{'type':'record','name':'Target','fields':[{'name':'destination','type':'com.linkedin.events.EntityID'},{'name':'visibility','type':'string','default':''}]}}},{'name':'references','type':{'type':'array','items':'com.linkedin.events.EntityID'}},{'name':'content','type':{'type':'map','values':'string'}},{'name':'joinedData','type':{'type':'map','values':[{'type':'record','name':'PersonInfo','namespace':'com.linkedin.firehose','fields':[{'name':'id','type':'int'},{'name':'active','type':'boolean'},{'name':'deleted','type':'boolean'},{'name':'name','type':'string'},{'name':'firstName','type':'string'},{'name':'lastName','type':'string'},{'name':'maidenName','type':'string'},{'name':'headline','type':'string'},{'name':'industryId','type':'int'},{'name':'pictureId','type':'string'},{'name':'showPictureSetting','type':'string'},{'name':'showFullLastName','type':'boolean'},{'name':'createdTime','type':'long'},{'name':'location','type':{'type':'record','name':'Location','namespace':'com.linkedin.firehose','fields':[{'name':'country','type':'string','default':''},{'name':'region','type':'string','default':''},{'name':'postalCode','type':'string','default':''},{'name':'place','type':'string','default':''},{'name':'latitude','type':'string','default':''},{'name':'longitude','type':'string','default':''}]}},{'name':'currentIndustries','type':{'type':'array','items':'int'}},{'name':'currentTitles','type':{'type':'array','items':'int'}},{'name':'currentCompanies','type':{'type':'array','items':'int'}},{'name':'currentFuncareas','type':{'type':'array','items':'int'}},{'name':'currentJobNames','type':{'type':'array','items':'int'}},{'name':'pastTitles','type':{'type':'array','items':'int'}},{'name':'pastCompanies','type':{'type':'array','items':'int'}},{'name':'pastFuncareas','type':{'type':'array','items':'int'}},{'name':'pastIndustries','type':{'type':'array','items':'int'}},{'name':'pastJobNames','type':{'type':'array','items':'int'}},{'name':'jobSeniorities','type':{'type':'array','items':'int'}},{'name':'standardizedSkills','type':{'type':'array','items':'int'}},{'name':'schools','type':{'type':'array','items':'int'}},{'name':'fieldsOfStudy','type':{'type':'array','items':'int'}},{'name':'degreeIds','type':{'type':'array','items':'int'}},{'name':'skillsAndScores','type':{'type':'array','items':{'type':'record','name':'SkillAndScore','namespace':'com.linkedin.firehose','fields':[{'name':'id','type':'int'},{'name':'score','type':'float'}]}}},{'name':'anetMembership','type':{'type':'array','items':'int'}},{'name':'connectionCount','type':'int'},{'name':'fortune1000','type':{'type':'array','items':'int'}}]},{'type':'record','name':'UrlUnwoundInfo','namespace':'com.linkedin.firehose','fields':[{'name':'submittedUrl','type':'string'},{'name':'resolvedUrl','type':'string'},{'name':'title','type':'string'},{'name':'description','type':'string'},{'name':'primaryImageUrl','type':'string'},{'name':'createdAt','type':'long'},{'name':'entityId','type':'com.linkedin.events.EntityID'},{'name':'hasBadWords','type':'boolean','default':false}]}]},'doc':'array of joined entities','default':{}}]}"; // unsanitizedSchema = unsanitizedSchema.replace("'", "\""); // System.out.println("Before " + unsanitizedSchema); // String sanitized = unsanitizedSchema.replaceAll(",\"doc\":\"[^\"]*\"", ""); // System.out.println("After " + sanitized); // // Properties props = new Properties(); // props.put("host", "localhost"); // props.put("port", String.valueOf(1234)); // // SyncProducerConfig config = new SyncProducerConfig(props); // // testSimpleConsumerOffset(); // // printPartition("2011-01-10-11-45"); // printPartition("2011-01-10-11-42"); // printPartition("2011-01-10-11-49"); // printPartition("2011-01-10-11-39"); // printPartition("2011-01-10-11-55"); // printPartition("2011-01-10-12-55"); // // // testConnection(); // TestKafkaZkClient client = new TestKafkaZkClient(); // // try // { // client.testJackson(); // } // catch (Exception e) // { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } // // private void testJackson() throws IOException, // URISyntaxException // { // uri = new URI("tcp://172.16.78.167:10251"); // // System.out.println("JSON String " + topic + " n:" + nodeId + " p:" + partition // + " o:" + offset + " pr:" + previousOffset + " uri:" + uri.toString()); // Map<String, Object> objectizedRequest = new HashMap<String, Object>(); // objectizedRequest.put(TOPIC_KEY, topic); // objectizedRequest.put(NODE_KEY, nodeId); // objectizedRequest.put(PARTITION_KEY, partition); // objectizedRequest.put(OFFSET_KEY, offset); // objectizedRequest.put(PREVIOUS_OFFSET_KEY, previousOffset); // // System.out.println("JSON String 0"); // // if (uri == null) // { // throw new IOException("URI needs to be set for node " + nodeId); // } // objectizedRequest.put(URI_KEY, uri.toString()); // // ObjectMapper m = new ObjectMapper(); // System.out.println("JsonString 1"); // String output = m.writeValueAsString(objectizedRequest); // // System.out.println("JsonString " + output); // } // // private static void testSimpleConsumerOffset() // { // try // { // URI uri = new URI("tcp://172.16.78.170:10251"); // SimpleConsumer consumer = // new SimpleConsumer(uri.getHost(), uri.getPort(), 30000, 1024 * 1024); // // long[] earliestTime = // consumer.getOffsetsBefore("TrackingMonitoringEvent", // 0, // OffsetRequest.EarliestTime(), // 1); // long[] latestTime = // consumer.getOffsetsBefore("TrackingMonitoringEvent", // 0, // OffsetRequest.LatestTime(), // 1); // writeLongArray("Earliest offset ", earliestTime); // writeLongArray("Latest offset ", latestTime); // writeLongArray("Time before now ", // consumer.getOffsetsBefore("TrackingMonitoringEvent", // 0, // 1303168253000l, // 1)); // } // catch (URISyntaxException e) // { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } // // private static void writeLongArray(String prefix, long[] array) // { // String text = "{"; // for (long val : array) // { // text += val + ","; // } // text += "}"; // // System.out.println(prefix + text); // } // // private static void testConnection() // { // EtlZkClient client = null; // try // { // client = // new EtlZkClient("esv4-be111.stg.linkedin.com:12913,esv4-be112.stg.linkedin.com:12913,esv4-be113.stg.linkedin.com:12913/kafka"); // } // catch (IOException e) // { // // TODO Auto-generated catch block // e.printStackTrace(); // } // Map<String, URI> brokersToUri = client.getBrokersToUriMap(); // // System.out.println("**Brokers**"); // for (Map.Entry<String, URI> entry : brokersToUri.entrySet()) // { // System.out.println("Node: " + entry.getKey() + " Uri: " + entry.getValue()); // } // // System.out.println("\n**Topics**"); // Map<String, List<EtlRequest>> request = client.getTopicKafkaRequests(); // for (Map.Entry<String, List<EtlRequest>> entry : request.entrySet()) // { // String topic = entry.getKey(); // List<EtlRequest> requestKeys = entry.getValue(); // // System.out.println("*" + topic + "*"); // for (EtlRequest requestKey : requestKeys) // { // System.out.println(requestKey); // } // } // } //}