Package com.cloudera.flume.conf.SinkFactory

Examples of com.cloudera.flume.conf.SinkFactory.SinkBuilder


    rpt.setLongMetric(A_SENTBYTES, sentBytes.get());
    return rpt;
  }

  public static SinkBuilder builder() {
    return new SinkBuilder() {
      @Override
      public EventSink build(Context context, String... args) {
        if (args.length > 2) {
          throw new IllegalArgumentException(
              "usage: thriftSink([hostname, [portno]]) ");
View Full Code Here


   *
   * Note: trigger is in context so can be set from any parent source such as
   * collectorSink
   */
  public static SinkBuilder builder() {
    return new SinkBuilder() {
      @Override
      public EventSink create(Context ctx, Object... argv) {
        Preconditions.checkArgument(argv.length >= 2 && argv.length <= 3,
            "roll(rollmillis[, checkmillis]{, trigger=time|size(n)}) { sink }");
        String spec = argv[0].toString();
View Full Code Here

    rpt.setLongMetric(ReportEvent.A_COUNT, count);
    return rpt;
  }

  public static SinkBuilder builder() {
    return new SinkBuilder() {

      @Deprecated
      @Override
      public EventSink build(Context context, String... args) {
        // updated interface calls build(Context,Object...) instead
View Full Code Here

  @Test
  public void testNoHang() throws IOException, InterruptedException,
      FlumeSpecException {
    // add a hanging sink.
    SinkFactoryImpl sf = new SinkFactoryImpl();
    sf.setSink("hang", new SinkBuilder() {

      @Override
      public EventSink build(Context context, String... argv) {
        return new EventSink.Base() {
          @Override
View Full Code Here

    case ROLL: {
      List<CommonTree> rollArgs = (List<CommonTree>) t.getChildren();
      try {
        Preconditions.checkArgument(rollArgs.size() >= 2, "bad parse tree! "
            + t.toStringTree() + "roll requires at least two arguments");
        SinkBuilder rollBuilder = RollSink.builder();
        Context ctx = new Context(context); // new scope
        List<Object> args = new ArrayList<Object>();

        // first is the sub sink spec
        CommonTree ctbody = rollArgs.get(0);
        String body= FlumeSpecGen.genEventSink(ctbody);
        args.add(body);

        // all others are args
        for (int i =1; i< rollArgs.size(); i++) {
          CommonTree tr = rollArgs.get(i);
          Object arg = buildSimpleArg(tr);
          if (arg != null) {
            args.add(arg);
          } else {
            Pair<String, CommonTree> kwarg = buildKWArg(tr);
            ctx.putObj(kwarg.getLeft(), buildSimpleArg(kwarg.getRight()));
          }
        }
        return rollBuilder.create(ctx, args.toArray());
      } catch (IllegalArgumentException iae) {
        throw new FlumeSpecException(iae.getMessage());
      }
    }

    case GEN: {
      List<CommonTree> collArgs = (List<CommonTree>) t.getChildren();
      try {
        Preconditions.checkArgument(collArgs.size() >= 2, "bad parse tree! "
            + t.toStringTree() + " generator takes at least 2 arguments");
        String genType = collArgs.get(0).getText();
        if (!"collector".equals(genType)) {
          throw new FlumeSpecException(
              "currently only handle 'collector' gen sinks");
        }
        CommonTree ctbody = collArgs.remove(1); // remove subsink.
        String body = FlumeSpecGen.genEventSink(ctbody);

        Context ctx = new Context(context);
        Pair<String, List<Object>> idArgs = handleArgs(t, ctx);
        String sourceType = idArgs.getLeft();
        List<Object> args = idArgs.getRight();
        args.add(0, body);

        // TODO replace with Generator Sink lookup
        Preconditions.checkArgument("collector".equals(sourceType));
        SinkBuilder builder = CollectorSink.builder();

        return builder.create(ctx, args.toArray());

      } catch (IllegalArgumentException iae) {
        throw new FlumeSpecException(iae.getMessage());
      }
View Full Code Here

  public void testOpenRuntimeExceptionSink() throws IOException,
      InterruptedException, FlumeSpecException {
    final EventSink snk = mock(EventSink.class);
    doThrow(new RuntimeException("Forced unexpected open error")).when(snk)
        .open();
    SinkBuilder sb = new SinkBuilder() {
      @Override
      public EventSink build(Context context, String... argv) {
        return snk;
      }
    };
View Full Code Here

  public void testAppendRuntimeExceptionSink() throws IOException,
      InterruptedException, FlumeSpecException {
    final EventSink snk = mock(EventSink.class);
    doThrow(new RuntimeException("Force unexpected append error")).when(snk)
        .append((Event) anyObject());
    SinkBuilder sb = new SinkBuilder() {
      @Override
      public EventSink build(Context context, String... argv) {
        return snk;
      }
    };
View Full Code Here

  public void testCloseRuntimeExceptionSink() throws IOException,
      InterruptedException, FlumeSpecException {
    final EventSink snk = mock(EventSink.class);
    doThrow(new RuntimeException("Force unexpected append error")).when(snk)
        .close();
    SinkBuilder sb = new SinkBuilder() {
      @Override
      public EventSink build(Context context, String... argv) {
        return snk;
      }
    };
View Full Code Here

  public void testCloseErrorSink() throws IOException, InterruptedException,
      FlumeSpecException {
    final EventSink snk = mock(EventSink.class);
    doThrow(new RuntimeException("Force unexpected append error")).when(snk)
        .append((Event) anyObject());
    SinkBuilder sb = new SinkBuilder() {
      @Override
      public EventSink build(Context context, String... argv) {
        return snk;
      }
    };
View Full Code Here

   * The first argument is required, but all failovers are optional.
   *
   * agentE2EChain("machine1[:port]" [, "machine2[:port]" [,...]])
   */
  public static SinkBuilder e2eBuilder() {
    return new SinkBuilder() {
      @Override
      public EventSink build(Context context, String... argv) {
        Preconditions
            .checkArgument(argv.length >= 1,
                "usage: agentE2EChain(\"machine1[:port]\" [, \"machine2[:port]\" [,...]])");
View Full Code Here

TOP

Related Classes of com.cloudera.flume.conf.SinkFactory.SinkBuilder

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.