code: def test_run_forecast_json():
      """Tests:
      - no coverage
      - hourly data (2+ years)
      - default `hyperparameter_grid` (all interaction terms enabled)
      """
      # sets random state for consistent comparison
      data = generate_df_for_tests(freq="H", periods=700 * 24)
      df = data["train_df"]
  
      json_str = """{
          "model_template": "SILVERKITE",
          "forecast_horizon": 3359,
          "model_components_param": {
              "custom": {
                  "fit_algorithm_dict": {
                      "fit_algorithm": "linear"
                  }
              }
          }
      }"""
  
      with warnings.catch_warnings():
          warnings.simplefilter("ignore")
          forecaster = Forecaster()
          result = forecaster.run_forecast_json(
              df=df, json_str=json_str
          )
  
          mse = (
              EvaluationMetricEnum.RootMeanSquaredError.get_metric_name()
          )
          q80 = EvaluationMetricEnum.Quantile80.get_metric_name()
          assert result.backtest.test_evaluation[mse] == pytest.approx(
              2.120, rel=0.03
          )
          assert result.backtest.test_evaluation[q80] == pytest.approx(
              0.863, rel=0.02
          )
          assert result.forecast.train_evaluation[mse] == pytest.approx(
              1.975, rel=0.02
          )
          assert result.forecast.train_evaluation[q80] == pytest.approx(
              0.786, rel=1e-2
          )
          check_forecast_pipeline_result(
              result,
              coverage=None,
              strategy=None,
              score_func=EvaluationMetricEnum.MeanAbsolutePercentError.name,
              greater_is_better=False,
          )
  
imports: import sys
  import warnings
  from enum import Enum
  import numpy
  import pandas
  import pytest
  from testfixtures import LogCapture
  from greykite.common.constants import LOGGER_NAME
  from greykite.common.constants import PREDICTED_LOWER_COL
  from greykite.common.constants import PREDICTED_UPPER_COL
  from greykite.common.constants import TIME_COL
  from greykite.common.constants import VALUE_COL
  from greykite.common.data_loader import DataLoader
  from greykite.common.evaluation import EvaluationMetricEnum
  from greykite.common.python_utils import assert_equal
  from greykite.common.testing_utils import generate_df_for_tests
  from greykite.common.testing_utils import generate_df_with_reg_for_tests
  from greykite.framework.templates.autogen.forecast_config import ComputationParam
  from greykite.framework.templates.autogen.forecast_config import EvaluationMetricParam
  from greykite.framework.templates.autogen.forecast_config import EvaluationPeriodParam
  from greykite.framework.templates.autogen.forecast_config import ForecastConfig
  from greykite.framework.templates.autogen.forecast_config import MetadataParam
  from greykite.framework.templates.autogen.forecast_config import ModelComponentsParam
  from greykite.framework.templates.forecaster import Forecaster
  from greykite.framework.templates.model_templates import ModelTemplate
  from greykite.framework.templates.model_templates import ModelTemplateEnum
  from greykite.framework.templates.prophet_template import ProphetTemplate
  from greykite.framework.templates.silverkite_template import SilverkiteTemplate
  from greykite.framework.templates.simple_silverkite_template import SimpleSilverkiteTemplate
  from greykite.framework.templates.simple_silverkite_template_config import SILVERKITE_COMPONENT_KEYWORDS
  from greykite.framework.templates.simple_silverkite_template_config import SimpleSilverkiteTemplateOptions
  from greykite.framework.utils.framework_testing_utils import assert_basic_pipeline_equal
  from greykite.framework.utils.framework_testing_utils import assert_forecast_pipeline_result_equal
  from greykite.framework.utils.framework_testing_utils import check_forecast_pipeline_result
  from greykite.framework.utils.result_summary import summarize_grid_search_results
label_desc: Use image node_id 8 for calling a global function with example usage: test_run_forecast_json() without return types