# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/fuzzing/fuzzer.gni")

###############################################################################
# AGGREGATE LIBRARIES

source_set("lib") {
  public_deps = []
}

source_set("tests") {
  testonly = true
  deps = [
    ":router_test",
  ]
}

###############################################################################

# router
source_set("router") {
  sources = [
    "router.cc",
    "router.h",
  ]
  public_deps = [
    ":routing_table",
  ]
  deps = [
    "//garnet/lib/overnet/environment:timer",
    "//garnet/lib/overnet/environment:trace",
    "//garnet/lib/overnet/protocol:routable_message",
    "//garnet/lib/overnet/vocabulary:callback",
    "//garnet/lib/overnet/vocabulary:closed_ptr",
    "//garnet/lib/overnet/vocabulary:lazy_slice",
    "//garnet/lib/overnet/vocabulary:slice",
    "//garnet/lib/overnet/protocol:fidl",
  ]
}

source_set("router_test") {
  testonly = true
  sources = [
    "router_test.cc",
  ]
  deps = [
    ":router",
    "//garnet/lib/overnet/testing:test_timer",
    "//garnet/lib/overnet/testing:trace_cout",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

# routing_table
source_set("routing_table") {
  sources = [
    "routing_table.cc",
    "routing_table.h",
  ]
  public_deps = [
    "//garnet/public/lib/fostr/fidl/fuchsia.overnet.protocol",
    "//garnet/public/fidl/fuchsia.overnet.protocol",
  ]
  deps = [
    "//garnet/lib/overnet/environment:timer",
    "//garnet/lib/overnet/environment:trace",
    "//garnet/lib/overnet/labels:node_id",
    "//garnet/lib/overnet/protocol:varint",  # TODO(ctiller): remove once we can take a FIDL dependency
    "//garnet/lib/overnet/vocabulary:bandwidth",
    "//garnet/lib/overnet/vocabulary:internal_list",
    "//garnet/lib/overnet/vocabulary:optional",
    "//garnet/lib/overnet/vocabulary:slice",
  ]
}

fuzz_target("routing_table_fuzzer") {
  testonly = true
  sources = [
    "routing_table_fuzzer.cc",
  ]
  deps = [
        ":routing_table",
        "//garnet/lib/overnet/protocol:fidl",
        "//garnet/lib/overnet/protocol:varint",
        "//garnet/lib/overnet/testing:test_timer",
        "//garnet/lib/overnet/testing:trace_cout",
  ]
}
